以下のような、私がリモートサーバーに対して実行している例を考えてみましょう。コマンド自体はデータを返しませんが、プロセスエクスプローラでプロセスを見ると、ネットワーク上で大量のデータを受信していることがわかります。以下の例では370MBを受信しました。 DBサーバー上でプロセスエクスプローラを見る私は、クライアントマシン上のネットワークアクティビティグラフと完全に一致するネットワークアクティビティグラフを見ることができますが、これは送信データ用です。100秒のネットワークトラフィックを生成するデータを返さないSQLコマンドが長時間実行されているのはなぜですか?
これを引き起こしている原因は何ですか。どのように防止できますか?
var query = @"
declare @Value nvarchar(max), @index int
set @index = 0
while @index < 10000000
begin
set @Value = 'this is just a test'
set @index = @index + 1
end";
var connectionString = "MyConnectionString";
using (var connection = new SqlConnection(connectionString))
using (var command = connection.CreateCommand())
{
connection.Open();
command.CommandTimeout = 0;
command.CommandText = query;
command.ExecuteNonQuery();
}
イベントハンドラを 'SqlConnection.InfoMessage'イベントにフックして、サーバからのイベントでスパムを受けているかどうかを確認してください。 –
@LasseVågsætherKarlsenイベントは発生しません。 –
@JasonBoydクエリの最初のステートメントとして 'SET NOCOUNT ON;'をスローすると、使用量が減少しますか? –