SQLServerはTRY CATCH
を提供します アプリケーションが問題を認識し、問題を処理するための適切なコードを実行できるようにするメカニズム。例:
BEGIN TRY <some code> END TRY BEGIN CATCH PRINT 'This is the error: ' + error_message() END CATCH
TRY
のコード ブロックが最初に実行されます。エラーが発生した場合、実行はCATCH
に渡されます ブロック。
TRY CATCH
を使用する場合、エラー処理にはどのような影響がありますか リンクサーバーを使用しますか?この状況では、次のエラーが発生する可能性があります:
- ローカルSQLServerインスタンス。
- リモートサーバーとの接続を容易にするために使用されるSQLServerインターフェイス。
- リモートサーバーをSQLServerにアクセスできるようにするために使用されるインターフェイス。
この設定例では、Salesforce.comサーバーをリモートサーバーとして使用します。このリモートサーバータイプの場合、インターフェイス2。 は、ODBCドライバーおよびインターフェイス3用のMicrosoftOLEDBプロバイダーです。 EasysoftのSalesforce.comODBCドライバーです。
次のエラーは、SQLServerでローカルに発生します。 SALESFORCE
という名前のリンクサーバー まだ作成されていないため、SQL Serverはそれを見つけることができません:
BEGIN TRY EXEC('SELECT * FROM OPENQUERY(SALESFORCE, ''SELECT * FROM LEASE'')') END TRY BEGIN CATCH PRINT 'This is the error: ' + error_message() END CATCH
This is the error: Could not find server 'SALESFORCE' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.
次のエラーは、Microsoft OLE DB Provider forODBCDriversレイヤーで発生します。 SALESFORCE
という名前のリンクサーバー ターゲットSalesforce.comサーバーの接続の詳細を含むODBCデータソースを参照します。ただし、SQL Serverは64ビットですが、ODBCデータソースは32ビットのODBCアドミニストレータで設定されています。 「アーキテクチャの不一致」エラーで接続が失敗する
OLE DB provider "MSDASQL" for linked server "SALESFORCE" returned message "[Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application". This is the error: Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "SALESFORCE".
SQLServerによるOLEDBエラーの解釈が、CATCH
によって検出されていることに注意してください。 ブロック。 OLEDBレイヤーからの「生の」エラーにはありません。
この最後のエラーは、Salesforce.comへの接続に使用されるODBCレイヤーで発生します。選択クエリは、まだ有効化および設定されていないカスタムSalesforce.comオブジェクト( "LEASE")を参照します。 「[EasysoftODBC]ベーステーブルまたはビューのLEASEが見つかりません」は、ODBCドライバーからのエラーです。これは、Microsoft OLE DB ProviderforODBCドライバーに渡されて表示されます。前の例のように、このメッセージはトラップ可能ではなく、SQLServerによるメッセージの解釈はトラップ可能です。
OLE DB provider "MSDASQL" for linked server "SALESFORCE" returned message "[Easysoft ODBC]Base table or view LEASE not found". This is the error: An error occurred while preparing the query "SELECT * FROM LEASE" for execution against OLE DB provider "MSDASQL" for linked server "SALESFORCE".
リンクサーバーがある場合とない場合の両方でのSQLServerエラー処理の詳細については、以下を参照してください。
http://www.sommarskog.se/error_handling/Part1.html