【发布时间】:2013-11-11 14:46:18
【问题描述】:
SCOPE_IDENTITY() 返回NULL 的另一个问题
情况如下:我有一台运行 Windows Server 2012R2 和 SQL Server 2012 的虚拟机。在我自己的机器上,我使用相同的 SQL Server 和 Windows 8.1
在 Management Studio 中执行以下查询:
INSERT INTO [DB1].[Extract].[Log]([Package], [StartTime])
VALUES ('Bla', GETDATE())
SELECT SCOPE_IDENTITY() AS 'Identity';
返回在我的 PC 上插入的行的标识 BUT 在虚拟机中返回 NULL(仍然插入该行),因此无法执行 SSIS 包。
这到底是怎么回事?会不会是对数据库的一些额外权限?
我不能错过说“它可以在我的机器上运行!” :)
【问题讨论】:
-
只是为了确定... DB1.Extract.Log 在虚拟机上定义了一个标识列?
-
要明确 - 对您的本地计算机运行 SSIS 包(使用真实数据库的虚拟/适当减少的副本)也可以工作,还是也会失败?
-
是的,它确实有效。一切都在我的机器上运行:D
-
顺便说一句,您应该开始使用输出子句。 Scope_identity 存在输出没有的并行性问题。
-
@HLGEM 感谢您的建议。我也会调查的。
标签: sql sql-server-2012 ssms