SqlContext.Pipe.Send(string str)を使用してSQL / CLRストアドプロシージャからメッセージを送信していますが、メッセージがSSMSにすぐに表示されません。メッセージをSSMSにすぐにフラッシュする方法は?ありがとう!
質問する
2742 次
2 に答える
1
@RBarryYoungが言っていることを次のように適応させることができます:
SqlConnection sqlCon = new SqlConnection("context connection=true"));
sqlCon.Open();
try {
SqlCommand sqlCommand = new SqlCommand(String.Format("raiserror('{0}', 0, 0) with nowait", str), sqlCon);
SqlContext.Pipe.ExecuteAndSend(sqlCommand);
} finally {
sqlCon.Close();
}
Sendを使用してこれを実行する場合は、バッファーをいっぱいにすることができます。
SqlContext.Pipe.Send(str.PadRight(4000));
SqlContext.Pipe.Send(String.Empty.PadRight(4000));
処理できるメッセージの最大長Send()
は4000です。バッファを埋めるには、スペースを含む別の行を送信する必要があります。2行目に4000を使用すると、すでにバッファに何が入っていても、メッセージ全体が確実にフラッシュされます。
2番目の方法の唯一の欠点は、メッセージ間に空白行があり、余分なスペースがたくさんあることです。最初の方法は、より良い出力を生成します。
于 2013-04-05T10:32:04.387 に答える
0
これを行うために私が知っている唯一の方法はRAISERROR
、WITH NOWAIT
オプションを使用することです。これにより、保留中のすべてのテキスト出力がすぐにフラッシュされます。これは実際のエラーなどである必要はありません。これは正常に機能します。
RAISERROR(' ',1,1) WITH NOWAIT;
于 2012-11-26T04:26:52.503 に答える