MsSql Server

时间:2015-11-09 08:05:08

标签: sql-server

执行SELECT SCOPE_IDENTITY()后,我得到一个空值。请注意,在我编写代码时,它就像一个魅力。代码是经典的ASP。

我使用的查询是:

INSERT INTO EID_Mandates([Uidx],[NatNr],[FirstName],[LastName],[ValidFrom],[ValidUntil],[Active]) 
VALUES(24387,'1234567','Paul','Tergeist','09/11/2015','09/11/2018',1);
SELECT SCOPE_IDENTITY() As MYID

执行时,Insert是正常的,但没有返回值(rs.fields.Count = 0)

Id位于id_mandate字段(自动增量)。

我很困惑!

编辑:11月10日 - 10:56 am。

好的,在接受了CPMunich的解决方案后,我继续寻找问题的原因,因为编程并不神奇。使用逻辑代码时,您会期望逻辑结果。

我发现的更令人沮丧。

1)插入代码在我测试时工作,这是肯定的,不,我没有改变它。

2)我做了一些测试,即使用一个简单的脚本来检查Scope_Identity()是否仍在工作......是的。

3)然后,我稍微修改了我之前的代码,以通过一个返回的测试函数(并显示ID)。不,没有,只有1个字段,不包含任何内容(NULL)。在那个函数中,我添加了代码来打开另一个连接(我用来打开主连接的代码)。 Dang,它有效!

4)我记录了两种情况下产生的SQL。除了日期时间和ID,完全相同。

所以在这一点上,我知道我的连接有点破坏,但不知道为什么?

最后我必须补充一点,整个服务器在一个月之前以腐烂的MS更新(KB2992611)的形式出现了一个大问题,这使得整个事情变得非常缓慢(这个错误影响了IIS通过LSASS连接到MSSQL服务器的方式。简而言之,对于每个查询,服务器的速度要慢10倍。

没问题,我目前正在将所有工作转移到另一个。

结论:遗憾的是,不确定。如果我做新的发现,我会告诉你们。

谢谢你们的帮助,以及StackOverflow在那里!

备注:毕竟,当你想到它时,PHP也很“古老”,不是吗? :)

2 个答案:

答案 0 :(得分:0)

确保

  1. 两个语句都使用相同的SqlCommand执行
  2. 您尚未为该表设置插入触发器。
  3. 如果您有该表的设置插入触发器,请使用SCOPE_IDENTITY

答案 1 :(得分:0)

也许这是你的选择:

 INSERT INTO EID_Mandates([Uidx],[NatNr],[FirstName],[LastName],[ValidFrom],[ValidUntil],[Active]) 
 OUTPUT inserted.id_mandate
 VALUES(24387,'1234567','Paul','Tergeist','09/11/2015','09/11/2018',1);

您将使用列id_mandate返回记录集。如果插入失败,则记录集将为空。