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 に複製されます。エラーが発生するのはアプリケーションからのみです。

問題のアプリケーションは、LOCALDB.dbo.WIQ に行を挿入する C# で記述された Windows サービスです。

ありがとうございました、

スコット・ベルカスキー

4

1 に答える 1

0

結局のところ、私のアプリケーションから呼び出されたコンポーネントの 1 つは、テーブルにデータを挿入し、そこに OUTPUT 句を持つストアド プロシージャを含んでいました。このコンポーネントがどのように機能するかを知らなかったので、エラーを軽減するために変更を加えることができました。

私の質問を読んで考えてくれたすべての人に感謝します。

于 2009-05-26T16:40:38.813 に答える