我遇到了触发器的问题,该触发器将值插入到链接服务器上的同一个表中。这是有问题的触发器......
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
答案 0 :(得分:0)
事实证明,从我的应用程序调用的其中一个组件涉及一个存储过程,该过程将数据插入表中并在其中包含OUTPUT子句。我不知道这个组件是如何运作的,我能够做出改变以减轻错误。
感谢所有阅读/思考我问题的人。