2016-05-30 5 views
2

スクリプトを実行してエラーをキャッチし、どこかに出力を書き込もうとしています。C#でSMOを使用してExecuteNonQuery文からエラーメッセージを取得します

私はこれを持っている:

... 
    SqlConnection connection = new SqlConnection(connString); 
    Server server = new Server(new ServerConnection(connection)); 
    server.ConnectionContext.ExecuteNonQuery(script); 
... 

私はトラブルのクエリの実際の問題を取得したのですSQLでいくつかの問題があります。

私は

試してみました)ExecutionFailureExceptionをキャッチし、それを処理する - 。エラー自体は、SQLの問題と

Bに関連する情報がありません)私は(server.ReadErrorLogを巡回しようとしました。 )これはサーバー接続のエラーログに関連しているようですが、実行されるSQLのコンテキストではなく、

bです。)私はInfoHandlerイベントハンドラをConnectionContextに追加しようとしましたが、発射する。

詳細なエラーメッセージを表示するにはどうすればよいですか? (可能であればつまり、私は管理スタジオでSQLを実行した場合、私は見ることの誤差が、完璧になる)

答えて

1

私はちょうどそれを考え出したのではなく、漠然と

を返しex.Messageを見て

Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。

Iは、単に)(ex.GetBaseExceptionを参照するExecutionFailureExceptionのメッセージを持っていたと私はより意味のある情報を受信した:。

無効なオブジェクト名 'FakeTable'(または任意のエラーがある)

コード:

... 
try 
{ 
    SqlConnection connection = new SqlConnection(connString); 
    Server server = new Server(new ServerConnection(connection)); 
    server.ConnectionContext.ExecuteNonQuery(script); 
} catch (ExecutionFailureException ex) { 
    MessageBox.Show("Error: " + ex.GetBaseException().Message); 
} 
関連する問題