これは、SCOPE_IDENTITY() を取得して SSIS パッケージ変数に割り当てるスクリプトです。
--START: SCRIPT TO CHECK IF THERE IS ENTRY FOR 'UNKOWNN' IN AUDIT DIMESNION - IF NOT INSERT
IF NOT EXISTS (SELECT AUDIT_SK FROM SHARED.AUDIT_DIM WHERE AUDIT_SK = -1)
BEGIN
SET IDENTITY_INSERT SHARED.AUDIT_DIM ON
INSERT INTO [SHARED].[AUDIT_DIM]
(AUDIT_SK
,[JOB_ID]
,[OUTPUT_STREAM_ID]
,[OUTPUT_STREAM_DESC]
,[SELECTION_START_DATE]
,[SELECTION_END_DATE]
,[JOB_RUN_DATE])
VALUES
(-1
,-1
,-1
,'UNKNOWN'
,'1000-01-01'
,'1000-01-01'
,'1000-01-01')
SET IDENTITY_INSERT SHARED.AUDIT_DIM OFF
END
--- END 'UNKOWNN' IN AUDIT DIMESNION
INSERT INTO [SHARED].[AUDIT_DIM]
(
[JOB_ID],
[OUTPUT_STREAM_ID],
[OUTPUT_STREAM_DESC],
[SELECTION_START_DATE],
[SELECTION_END_DATE],
[JOB_RUN_DATE]
)
VALUES (
?, --parameters passed from package variables
?, --parameters passed from package variables
?, --parameters passed from package variables
?, --parameters passed from package variables
?, --parameters passed from package variables
? --parameters passed from package variables
)
SELECT CONVERT(INT,SCOPE_IDENTITY()) -- This is assigned back to Package variable
これは、過去数か月間はすべて正常に機能していましたが、次のエラーで常に失敗しています。
メッセージ
ユーザーとして実行: XXXXXXX\xxxxxxx。Microsoft (R) SQL Server Execute Package Utility Version 10.0.2531.0 for 64-bit Copyright (C) Microsoft Corp 1984-2005. 全著作権所有。開始: 3:53:54 PM エラー: 2012-04-30 15:54:07.15 コード: 0xC002F210 ソース: AUDIT_SK の生成 SQL 実行タスクの説明: クエリの実行 "--START: SCRIPT TO CHECK IF THERE IS ENTRY FOR 'U ...」は次のエラーで失敗しました:「結果をタイプ (DBTYPE_I2) の変数に抽出中にエラーが発生しました」。考えられる失敗の理由: クエリの問題、「ResultSet」プロパティが正しく設定されていない、パラメーターが正しく設定されていない、または接続が正しく確立されていない。終了エラー DTExec: パッケージの実行で DTSER_FAILURE (1) が返されました。開始: 午後 3:53:54 終了: 午後 3:54:07 経過: 13.151 秒。パッケージの実行に失敗しました。ステップは失敗しました。
パッケージを別の環境にコピーするか、SSMS でスクリプトを単独で実行すると、すべて正常に動作します。
誰かが私をどこから調べ始めるべきか教えてもらえますか?
ありがとう