SQL Server - 生成没有主键的脚本

时间:2013-05-14 18:32:59

标签: sql sql-server migration

我正在寻找答案,但我找不到。

我正在尝试生成我的数据的生成脚本(我的意思是,所有INSERT INTO命令)。 因为访问权限,我不能做SET IDENTITY_INSERT TABLE OFF和ON(我在Staging中使用用户应用程序)

那么,有一种方法可以在SQL Server Manager中创建此脚本并避免使用主键的字段吗? 我将所有属性(主要,唯一等)设置为false,但脚本仍在发送此字段(例如,RecID 1,2,3等)。

我正在使用SQL Server 2012。

亲切的问候,

任何解决方案(除了用Notepad ++删除它)都是预先确定的。 请在downvoted之前询问/编辑,并抱歉我的英语:)

更新:我的脚本配置:

enter image description here

我得到的结果:

SET IDENTITY_INSERT -TABLE- ON 
INSERT INTO TABLE (ID,Field1) VALUES (1,'value')

3 个答案:

答案 0 :(得分:12)

一些解决方法,但有时用来做这些事情的快速而肮脏的方式:

SELECT 'INSERT INTO TABLE (Field1) VALUES (''' + Field1 + ''')' FROM TABLE

对于表TABLE中的每一行,结果集将是每个insert语句的一行。 INSERT语句是通过将INSERT语句文本与Field1中的值连接而生成的。

答案 1 :(得分:3)

还有另一种方法可以做到这一点,当您拥有许多不同数据类型的列时,它会更加自动化,并且工作量也更少。给定表T:

(
  ID int identity,
  C1 nvarchar(255),
  C2 datetime
  ...
)

...选择除身份列以外的所有内容到新表中:

select C1, C2, ... into InterimTable from T

然后:

  1. InterimTable上运行“生成脚本”向导。
  2. 使用所需的任何工具在SQL中搜索InterimTable并替换为T
  3. 运行

答案 2 :(得分:-2)

我在选项中找不到这个,但是您可以在生成的脚本中快速替换

  1. 使用全部替换从脚本中删除“ [Id],”
      

    插入[dbo]。[表名]( [Id], [名称])值(1,'名称')

remove Id screenshot

  1. 使用正则表达式
  2. 替换来删除ID值
  

([0-9] +,

with(

  

插入[dbo]。[表名]([名称])值( 1,'名称')

remove id value screenshot