.NET アプリケーション内でのストアド プロシージャの印刷出力へのアクセス
アプリケーションの最新化にはレガシー システムの統合が含まれることが多く、エラー ログに PRINT
ステートメントを使用してストアド プロシージャを処理するなどの課題が生じます。 このメソッドは、SQL Server Management Studio またはコマンド ライン インターフェイスでは機能しますが、.NET では直接アクセスできません。 この記事では、この出力をキャプチャし、管理を改善するためにリダイレクトする方法を説明します。
この解決策には、InfoMessage
クラスの SqlConnection
イベントを利用することが含まれます。このイベントをサブスクライブすることにより、.NET アプリケーションはストアド プロシージャから PRINT
ステートメントをインターセプトして処理できます。
これがわかりやすい例です:
<code class="language-csharp">using System.Data.SqlClient; using System.Data; // Connection string (replace with your actual connection string) string connectionString = @"<conn_string>"; using (SqlConnection connection = new SqlConnection(connectionString)) { // Subscribe to the InfoMessage event connection.InfoMessage += Connection_InfoMessage; // Prepare the stored procedure call SqlCommand cmd = new SqlCommand("usp_printWord", connection); cmd.CommandType = CommandType.StoredProcedure; connection.Open(); // Execute the stored procedure cmd.ExecuteNonQuery(); connection.Close(); } // Event handler to process the captured output void Connection_InfoMessage(object sender, SqlInfoMessageEventArgs e) { // Display the captured message Console.WriteLine(e.Message); }</code>
このアプローチにより、統合プロセス中にレガシー ストアド プロシージャからの重大なエラー メッセージが見落とされることがなくなり、データの整合性が維持され、.NET への移行が合理化されます。
以上が.NET アプリケーションでストアド プロシージャの印刷出力をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。