Sql server 2005 触发器返回结果集和服务器选项';不允许来自触发器的结果';是真的
我有一个触发器运行在一个不返回结果集的表上:Sql server 2005 触发器返回结果集和服务器选项';不允许来自触发器的结果';是真的,sql-server-2005,triggers,ssms,Sql Server 2005,Triggers,Ssms,我有一个触发器运行在一个不返回结果集的表上: ALTER TRIGGER [dbo].[LogDelete_Nodes] ON [dbo].[Nodes] FOR DELETE AS BEGIN SET NOCOUNT ON; /* Load the saved context info UserGUID */ DECLARE @SavedUserGUID uniqueidentifier SET @SavedUserGUID = (SELECT CAST(c
ALTER TRIGGER [dbo].[LogDelete_Nodes] ON [dbo].[Nodes]
FOR DELETE
AS
BEGIN
SET NOCOUNT ON;
/* Load the saved context info UserGUID */
DECLARE @SavedUserGUID uniqueidentifier
SET @SavedUserGUID = (SELECT CAST(context_info as uniqueidentifier)
FROM master.dbo.sysprocesses
WHERE spid = @@SPID)
--remaining trigger contents deleted to provide simple example
END;
从节点
表中删除行将导致错误:
Msg 524,16级,状态1,程序日志删除节点,第10行触发器返回了一个resultset,服务器选项“disallow results from triggers”为true 如何使触发器不返回resultset而不返回resultset
注意:触发器最初定义为使用未弃用的语法设置变量:
SELECT @SavedUserGUID = CAST(context_info as uniqueidentifier)
FROM master.dbo.sysprocesses
WHERE spid = @@SPID
它仍然会给出相同的错误
SELECT @@version
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59
Copyright (C) 1988-2005 Microsoft Corporation
Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
答复如下 我们在我写这个问题的时候解决了这个问题。我仍然要问这个问题,因为这个答案可以证明对任何有这个神秘问题的人都非常有用 另见
关闭该选项以查看执行计划,它就会工作。这使得跟踪执行计划变得困难,因为您不允许查看执行计划 这很可能是SQLServer2005中的一个bug