2008-09-16 6 views
2

C#アプリケーションからストアドプロシージャを実行する必要があります。C#からsqlcmdを起動するとエラーを取得する方法は?

私がそうするように、次のコードを使用し

Process sqlcmdCall = new Process(); 
sqlcmdCall.StartInfo.FileName = "sqlcmd.exe"; 
sqlcmdCall.StartInfo.Arguments = "-S localhost\\SQLEXPRESS -d some_db -Q \":EXIT(sp_test)\"" 
sqlcmdCall.Start(); 
sqlcmdCall.WaitForExit(); 

sqlcmdCallオブジェクトから呼び出しが完了した後、私は現在、障害のために、成功のためにと1の-100の終了コードを取得する(すなわち欠落しているパラメータ、保存されましたprocは存在しません、etc ...)。

これらのリターンコードをカスタマイズするにはどうすればよいですか? H.

答えて

1

あなたは、コマンドラインを介してsqlcmdの呼び出しの代わりにADO.Netを使用したいのC#からストアドプロシージャを呼び出すためにしようとしている場合。 System.Data.SqlClient名前空間のSqlConnectionSqlCommandを見てください。

SqlCommand経由でストアドプロシージャを呼び出すと、ストアドプロシージャによって生成された例外をキャッチし、必要に応じてプロシージャの戻り値を読み取ることができます。

2

私はそのようなシステムコマンドを実行する小さなVB.Netアプリケーションを持っています。私は、コマンドからのエラー・テキスト出力と一致する正規表現を定義し、私はこのような出力をキャプチャエラーまたは成功条件キャプチャするには:

 myprocess.Start() 
     procReader = myprocess.StandardOutput() 

     While (Not procReader.EndOfStream) 
      procLine = procReader.ReadLine() 

      If (MatchesRegEx(errRegEx, procLine)) Then 
       writeDebug("Error reg ex: [" + errorRegEx + "] has matched: [" + procLine + "] setting hasError to true.") 

       Me.hasError = True 
      End If 

      writeLog(procLine) 
     End While 

     procReader.Close() 

     myprocess.WaitForExit(CInt(waitTime)) 

を私は特定のエラーを捕捉し、また、コマンドからのすべての出力をログに記録することができますその方法予期しないエラーが発生した場合に備えて

0

Windows認証でも、SqlCommandSqlConnectionを実行することができます。例外処理のためにホイールを再作成する必要はありません。

単純な接続構成と単一のSqlCommandが問題なく実行できます。

関連する問題