我正在寻找答案,但我找不到。
我正在尝试生成我的数据的生成脚本(我的意思是,所有INSERT INTO命令)。 因为访问权限,我不能做SET IDENTITY_INSERT TABLE OFF和ON(我在Staging中使用用户应用程序)
那么,有一种方法可以在SQL Server Manager中创建此脚本并避免使用主键的字段吗? 我将所有属性(主要,唯一等)设置为false,但脚本仍在发送此字段(例如,RecID 1,2,3等)。
我正在使用SQL Server 2012。
亲切的问候,
任何解决方案(除了用Notepad ++删除它)都是预先确定的。 请在downvoted之前询问/编辑,并抱歉我的英语:)
更新:我的脚本配置:
我得到的结果:
SET IDENTITY_INSERT -TABLE- ON
INSERT INTO TABLE (ID,Field1) VALUES (1,'value')
答案 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
然后:
InterimTable
上运行“生成脚本”向导。InterimTable
并替换为T
答案 2 :(得分:-2)
我在选项中找不到这个,但是您可以在生成的脚本中快速替换
插入[dbo]。[表名]( [Id], [名称])值(1,'名称')
([0-9] +,
with(
插入[dbo]。[表名]([名称])值( 1,'名称')