1

我遇到了一个触发器问题,该触发器将一个值插入到链接服务器上的同一个表中。这是有问题的触发器...

USE [localDB]
GO
/****** Object:  Trigger [dbo].[INS_New_Row]    Script Date: 05/26/2009 10:50:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER TRIGGER dbo.INS_New_Row
   ON  LOCALDB.dbo.WIQ
   AFTER INSERT
AS 
BEGIN
    INSERT INTO
        DRSERVER.LOCALDBCLONE.dbo.WIQ
    SELECT
              column1,
              column2,
              column3
    FROM
        inserted
END

当我从我的应用程序向 LOCALDB.dbo.WIQ 中插入一行时,我收到以下错误...

System.Data.SqlClient.SqlException:如果语句包含没有 INTO 子句的 OUTPUT 子句,则 DML 语句的目标表“WIQ”不能有任何启用的触发器。

问题是我在表上定义的这个(或任何其他)触发器中没有任何 OUTPUT 子句,目标表上也没有定义任何触发器。

我不确定为什么会收到此错误。奇怪的是,如果我从 SQL Server Management Studio 将值插入到列中,触发器运行正常,并且该行被复制到 DRSERVER 中,它只是来自应用程序的错误。

有问题的应用程序是用 C# 编写的 Windows 服务,可将行插入 LOCALDB.dbo.WIQ。

谢谢,

斯科特·维库斯基

4

1 回答 1

0

事实证明,从我的应用程序调用的组件之一涉及一个存储过程,该过程将数据插入到表中并在其中包含一个 OUTPUT 子句。我不知道这个组件是如何运作的,我能够进行更改以减轻错误。

感谢所有阅读/思考我的问题的人。

于 2009-05-26T16:40:38.813 回答