4

SSIS パッケージを 2008 から 2012 にアップグレードしようとすると、以下のエラーが発生します。

エラー: SSIS エラー コード DTS_E_OLEDBERROR。OLE DB エラーが発生しました。エラー コード: 0x80004005。

OLE DB レコードが利用可能です。ソース: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 説明: "プロシージャ 'DebugPrint' のステートメント 'EXEC master.dbo.xp_logevent @ErrorCode, @Message, error' が拡張ストアド プロシージャを呼び出すため、メタデータを特定できませんでした。 "。

エラー: SQL コマンドのパラメーターから宛先列の説明を取得できません。

基本的に、複数の (ネストされた) ストアド プロシージャを呼び出すストアド プロシージャを呼び出す OLE DB コマンドがあり、そのうちの 1 つは master.dbo.xp_logevent を呼び出す DebugPrint です。それを修正するアイデアはありますか?SSIS 2008 で動作します。

ありがとう

4

2 に答える 2

1

同様のエラーに遭遇しました。

An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80004005  Description: "The metadata could not be determined because statement '....' uses a temp table.".

回避します。

SP が a を使用し#table or ##table、それが SP で使用されている場合、 #table 構造を とともに指定する必要がありますEXEC

SP は構造と一緒に指定する必要があります。

EXEC SP_TestTemp 1,2

次のように指定する必要があります

EXEC SP_TestTemp 1,2 WITH RESULT SETS
(
(
id      int,
Marks   int
)
)

注: 'retain same connection = true' および 'validate external metadata' = false は、ここでは役に立たなかった/機能しませんでした

于 2014-10-23T13:41:10.237 に答える
1

プロシージャを呼び出してそこにメタデータを設定するときに、「with result sets」を使用してみてください。

例 :

EXEC dbo.proc  
WITH RESULT SETS (
ID INT
,Col2 VARCHAR)
于 2014-06-10T21:18:10.633 に答える