加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server – 复制表的完整结构

发布时间:2021-05-25 06:58:15 所属栏目:编程 来源:网络整理
导读:行使某些要领,当您建设表的副本时,您将丢失索引,PK,FK等.譬喻,在SQL Server中,我可以说: select * into dbo.table2 from dbo.table1; 这只是表格的简朴副本;穷乏全部索引/束缚.怎样复制表布局(不行使备份)? 我首要是想手动执行此操纵,但假如不行能,我会接管

行使某些要领,当您建设表的副本时,您将丢失索引,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.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读