这是我试图在触发器内运行的代码。在触发器中,由于EXEC线路而失败。我知道这一点,因为当我把它拿出来时,代码至少会完成执行。如果我把它留在里面,它甚至都不打算完成。我知道这个,因为如果我取出exec行,它会将sql行写入错误表。
我必须在这里使用EXEC命令写入远程服务器。我不能使用nvarchar变量来定义服务器。 Insert需要显式表或表变量。我需要能够写入这个远程服务器,直到运行时我才知道它的名称,所以我不能明确。如何在触发器内使用EXEC或是否有另一种方法可以为这只猫提供皮肤?
DECLARE @acctNum int
DECLARE @tickets nvarchar(MAX)
DECLARE @server nvarchar(64)
DECLARE @sql nvarchar(MAX)
if EXISTS (SELECT * FROM dbo.queueNames WHERE queueName = 'queue1')
BEGIN
SELECT @server = queueServer FROM dbo.queueNames WHERE queueName = 'queue1'
SET @server = @server + '.[AMEETING].dbo.tblMembers'
SELECT TOP 1 @acctNum = AccountNum, @tickets = Tickets FROM dbo.queue1 ORDER BY AccountNum
SET @sql = 'UPDATE ' + @server + ' SET Present = ''1'', Tickets = ''' + @tickets + ''' WHERE AccountNum = ' + convert(nvarchar(64),@acctNum)
INSERT INTO dbo.errors values (@sql)
EXEC (@sql)
DELETE FROM dbo.queue1 WHERE AccountNum = @acctNum
END
答案 0 :(得分:0)
我放弃了这一点,并且已经在本地服务器上使用文本文件并在后台运行进程来排队sql语句。