SSISパッケージを作成しています。 このパッケージでは、私はDB(宛先)にCSV(ソース)を挿入しているデータフローを持っています。SSISパッケージ(SQL Server 2016)でトリガを起動するとエラーが発生する
パッケージは完全に機能します。 この問題は、同時にトリガーを起動しようとしているときに発生します。これを行うために、私は宛先コンポーネントのプロパティを編集しています。具体的な特性で私が,FIRE_TRIGGERS
怒鳴るを追加してい:私はパッケージを実行すると
FastLoadOptions | TABLOCK,CHECK_CONSTRAINTS,FIRE_TRIGGERS
は今、私は次のエラーを取得:
[OLE DB Destination [139]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "The statement has been terminated.". An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.".
を、私はこの記事Unable to access sql server configuration managerに続いて、私は単純に次のコマンドを実行しましたAdmin-CMDから(私はSQL Server 2016を持っています)
cd "C:\Program Files (x86)\Microsoft SQL Server\140\Shared" Then Run : mofcomp sqlmgmproviderxpsp2up.mof
まだ何もありません。
ありがとうございました!
私のシステム:Windows10、SQL Serverの2016、Visual Studioの2015
編集:トリガー・コードは以下の通りです:
DROP TRIGGER IF EXISTS AccidentsTrigger
GO
USE SSIS_db;
GO
CREATE TRIGGER AccidentsTrigger
ON [Accidents]
AFTER INSERT AS
BEGIN;
SET NOCOUNT ON;
IF (SELECT [second_road_class] FROM INSERTED) LIKE '-1'
BEGIN;
UPDATE a
SET [second_road_class] = '6'
FROM [Accidents] AS a
INNER JOIN INSERTED i ON a.accident_index = i.accident_index AND i.[second_road_class] = '-1';
END;
END;
GO
エラーメッセージは、何が間違っているかを正確に伝えています。エラーの検出に役立つ必要がある場合は、トリガーコードを送信する必要があります。 –
私はSSMSを介して簡単な挿入を実行しているときにすべてが正常に動作しているので、私はトリガーコードを投稿していません! 更新:元の投稿を編集し、トリガーコードを追加しました。 編集:トリガーに間違いがあります。私はそれを1行でテストしていましたが、複数行では機能しませんでした。 – Diaman