sql-server – 复制表的完整结构
行使某些要领,当您建设表的副本时,您将丢失索引,PK,FK等.譬喻,在SQL Server中,我可以说: select * into dbo.table2 from dbo.table1; 这只是表格的简朴副本;穷乏全部索引/束缚.怎样复制表布局(不行使备份)? 我首要是想手动执行此操纵,但假如不行能,我会接管任何办理方案. 办理要领您虽然可以行使UI相对简朴地编写表格剧本:这将输出CREATE TABLE剧本,您只必要行使新名称搜刮并替代旧名称(并验证具有新名称的工具尚不存在). 可是,假如您实行自动执行此操纵(譬喻,在代码中天生建设表剧本),则会越发贫困.上面的剧本选项不可是从元数据中的单个位置拉出整个CREATE TABLE DDL;它在代码中完成了一大堆把戏,以天生最终的CREATE TABLE剧本(您可以行使Profiler查察它获取数据的位置,可是您无法看到它怎样组装它).我为此提议了一个选项: http://connect.microsoft.com/SQLServer/feedback/details/273934 然而,这获得了很少的投票,很快被微软击落.您也许会发明行使第三方器材天生模式更值得(I’ve blogged about this). 在SQL Server 2012中,有一些新的元数据函数可以让您比2005,2008和2008 R2中的事变越发靠近,将元数据中的列信息拼集在一路(这有许多告诫,譬喻,假如它是十进制你必需添加精度/比例,假如[n [var [char]]你必需添加长度规格,假如n [var] char你必需将max_length减半,假如它是MAX你必需将-1变动为MAX等等).在SQL Server 2012中,这部门更轻易一些: SELECT name,system_type_name,is_nullable FROM sys.dm_exec_describe_first_result_set('select * from sys.objects',NULL,0) 功效: name system_type_name is_nullable -------------------- ---------------- ----------- name nvarchar(128) 0 object_id int 0 principal_id int 1 schema_id int 0 parent_object_id int 0 type char(2) 0 type_desc nvarchar(60) 1 create_date datetime 0 modify_date datetime 0 is_ms_shipped bit 0 is_published bit 0 is_schema_published bit 0 I’ve blogged about this,too. 可以说,与行使sys.columns的庞概略领对比,这更靠近您的方针CREATE TABLE语句,但仍有很多事变要做.密钥,束缚,行选项中的文本,文件组信息,压缩配置,索引等.这是一个很是长的列表,我将再次提议您查察第三方器材而不是,也许会一再过来 – 行使类比,从头发现轮子. 总而言之,假如您必要通过代码执行此操纵,但您可以在SQL Server之外执行此操纵,则可以思量行使SMO / PowerShell.见this tip和Scripter.Script() method. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |