2009-05-26 11 views
1

Je rencontre un problème avec un déclencheur qui insère une valeur dans la même table sur un serveur lié. Voici le déclencheur en question ...Déclencheur inséré dans une table liée provoquant une erreur

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 

Lorsque j'insère une ligne dans LOCALDB.dbo.WIQ de ma demande que je reçois la errror suivante ...

System.Data.SqlClient .SqlException: La table cible 'WIQ' de l'instruction DML ne peut avoir aucun déclencheur activé si l'instruction contient une clause OUTPUT sans clause INTO.

Le problème est que je n'ai aucune clause de production dans ce (ou tout autre) déclencheur défini sur la table, ni la table cible ont des déclencheurs définis sur elle.

Je ne sais pas exactement pourquoi je reçois cette erreur. La chose étrange est, si j'insère des valeurs dans les colonnes de SQL Server Management Studio, le déclencheur s'exécute bien et la ligne est dupliquée dans le DRSERVER, c'est seulement de l'application qui obtient une erreur.

L'application en question est un service Windows écrit en C# qui insère des lignes dans LOCALDB.dbo.WIQ.

Merci,

Scott Vercuski

Répondre

0

Comme il se trouve, l'un des éléments qui a été appelé de ma demande en cause une procédure stockée qui insère les données dans la table et avait une clause OUTPUT en elle . Je ne savais pas comment fonctionnait ce composant et j'étais capable de faire des changements pour atténuer l'erreur.

Merci à tous ceux qui ont lu/réfléchi à ma question.