插入到链接表中导致错误的触发器

时间:2009-05-26 15:13:46

标签: c# windows-services insert triggers linked-server

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

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:DML的目标表'WIQ'   语句不能有任何启用   如果语句包含一个,则触发   没有INTO子句的OUTPUT子句。

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

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

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

谢谢,

Scott Vercuski

1 个答案:

答案 0 :(得分:0)

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

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