- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图从一个文本文件中获取数千张发票(和其他东西)并将它们插入到 SQL Server 2008 中。我编写了一个小控制台应用程序来执行此操作,它使用 LINQ to SQL。插入所有现有发票后,我希望 Invoice_ID
成为标识列并自动递增,因此我将其设计为:
CREATE TABLE [dbo].[Invoice]
(
[Invoice_ID] int IDENTITY(1,1) NOT NULL PRIMARY KEY,
/* Other fields elided */
)
在我开始插入发票之前,我调用了一个包含以下行的存储过程:
SET IDENTITY_INSERT [dbo].[Invoice] ON;
/* Other lines for setup elided */
提交更改后,我使用以下行调用另一个存储过程:
SET IDENTITY_INSERT [dbo].[Invoice] OFF;
/* Other lines for clean up elided */
当我尝试插入发票并提交更改时,出现以下异常:
SQLException: Cannot insert explicit value for identity column in table 'Invoice' when IDENTITY_INSERT is set to OFF.
我运行了 SQL Profiler,我可以看到它确实在尝试执行插入之前将 IDENTITY_INSERT
设置为 ON
。我没有看到它在任何地方被设置为 OFF
。我是 SQL Profiler 的新手,所以也许我可以启用一个事件,它会为我提供更多信息来尝试和调试它。有任何想法吗?
我试过调整 LINQ to SQL 使用的 .dbml 文件中的值。我将 Invoice
表的 Auto Generated Value
设置为“False”,将 Auto-Sync
设置为“Never”,并将 Server数据类型
设置为“Int NOT NULL”。通常我会将它们分别设置为“True”、“On Insert”和“Int NOT NULL IDENTITY”,但是当我这样做时,我可以看到 SQL Server 正在执行:
SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]
而不是插入我提供的 Invoice_ID
。
最佳答案
http://msdn.microsoft.com/en-us/library/ms190356.aspx
如果你往下看,你会看到:
If a SET statement is run in a stored procedure or trigger, the value of the SET option is restored after control is returned from the stored procedure or trigger. Also, if a SET statement is specified in a dynamic SQL string that is run by using either sp_executesql or EXECUTE, the value of the SET option is restored after control is returned from the batch specified in the dynamic SQL string.
关于c# - 我将 IDENTITY_INSERT 设置为 ON 但我收到一个 SqlException 说它已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1977845/
我是一名优秀的程序员,十分优秀!