4

ROWCOUNT が何に設定されているかを確認する方法はありますか?

ストアド プロシージャを呼び出すために使用するコンポーネントには、返される行数を制限するオプションがありますが、ROWCOUNT を設定することでそれを行っているようです。1 つのストアド プロシージャは 1 つの集約された行のみを返しますが、中間クエリは制限を超えて返すことがあり、切り詰められています。これらすべてを行う関数は汎用であり、他のストアド プロシージャを呼び出すために使用されます。私の他の手順には制限が必要な場合があります。

現在、ストアド プロシージャの先頭で ROWCOUNT を非常に大きな数に設定し、結果を返す前に (ハードコードされた) 通常の制限に戻しています。ストアド プロシージャを呼び出すコンポーネントを維持していないため、返される行の制限が変更されているかどうかがわからない場合があります。私がやりたいのは、ローカル変数を現在の ROWCOUNT 値に設定し、最後に元に戻すことです。ROWCOUNT が何に設定されているかを実際に確認する方法はありますか?

4

2 に答える 2

3

sys.dm_exec_sessions dmvにクエリを実行すると、この時点までにセッションで返された行数が返されます(もちろん、@@ rowcountと同じである必要があります)。

SELECT row_count FROM sys.dm_exec_sessions
WHERE session_id = @@spid

あなたはそれをいじって、あなたがそれを使うことができるかどうか見ることができるかもしれません

現在、ストアドプロシージャの上部でROWCOUNTを非常に大きな数に設定しています

また、実行することもできますSET ROWCOUNT 0。この場合、すべての行が返されます。

于 2010-12-21T17:37:17.677 に答える
2

SET ROWCOUNTの使用を停止します。とにかく部分的に廃止されています。

SQL Server 2000 から 11 年間使用されている TOP を使用します。これはクエリごとであり、中間行には影響しません。つまり、現在のようにグローバルではなく、必要に応じて適用できます。

編集、2012 年 2 月

SQL Server 2012の後の次のリリースでは、挿入、更新、および削除についても削除されています。

于 2010-12-21T18:33:05.210 に答える