Триггер, который вставляет в связанную таблицу, вызывая ошибку - PullRequest
1 голос
/ 26 мая 2009

У меня проблема с триггером, который вставляет значение в ту же таблицу на связанном сервере. Вот триггер, о котором идет речь ...

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: целевая таблица «WIQ» DML оператор не может быть включен срабатывает, если инструкция содержит Предложение OUTPUT без предложения INTO.

Проблема в том, что у меня нет ни одного предложения OUTPUT в этом (или любом другом) триггере, определенном в таблице, и в целевой таблице не определены триггеры.

Я не уверен, почему я получаю эту ошибку. Странно то, что если я вставляю значения в столбцы из SQL Server Management Studio, триггер работает нормально и строка дублируется в DRSERVER, только из приложения выдается ошибка.

Рассматриваемое приложение - это служба Windows, написанная на C #, которая вставляет строки в LOCALDB.dbo.WIQ.

Спасибо,

Скотт Веркуски

1 Ответ

0 голосов
/ 26 мая 2009

Как оказалось, один из компонентов, который был вызван из моего приложения, содержал хранимую процедуру, которая вставляла данные в таблицу и содержала в ней предложение OUTPUT. Я не знал, как именно функционировал этот компонент, и я смог внести изменения, чтобы устранить ошибку.

Спасибо всем, кто прочитал / обдумал мой вопрос.

...