1

最近、MS SQL Server 2005 インスタンスを MS SQL 2012 にアップグレードし始めました。VM を作成し、MS SQL Server をインストールし、バックアップを使用して新しいサーバーに DB を作成しました。

Visual Studio で古い接続を新しい接続に切り替えていましたが、コマンドを含む OLE DB コマンド変換の接続を切り替えたときに"UPDATE JOB SET Active = 0 WHERE Job.JobId = ?"、次のエラーを受け取りました。

エラー 1 検証エラー。

 Sync Jobs: Sync Jobs: 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
 metadata could not be determined because statement 'REVERT       
 --Check if SSB is enabled in this database' in procedure 'sp_send_dbmail' 
 does not support metadata discovery.".  JobPack.dtsx 0 0 

エラー 2 検証エラー。

 Sync Jobs: Sync Jobs: Unable to retrieve
 destination column descriptions from the parameters of the SQL
 command.   JobPack.dtsx 0 0

この「SSB」が新しいDBでオンになっていることを確認しましたが(そうではありませんでした)、有効にした後でもこのエラーを解決できません。古いサーバーに戻すと、正常に動作します...

更新: 電子メールの手順がどこで発生したのか疑問に思っていたところ、DB には更新時に電子メールを送信するトリガーがあることがわかりました。このトリガーを無効にすると、SSIS パッケージの問題が解決されます。このトリガーが有効になっているときに BIDS がエディターでエラーを表示する理由はまだわかりません。

4

2 に答える 2

1

変換時にネイティブ SQL ドライバーから MS SQL ドライバーに切り替えるだけで、この問題を解決できました。なぜそれが機能するのか、なぜこれが互換性の問題を引き起こしたのか、私にはまだわかりません。

于 2013-03-04T17:23:11.223 に答える
0

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

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:39:46.497 に答える