web-dev-qa-db-ja.com

データを変更するSQLクエリを「テスト」するにはどうすればよいですか。つまり、SQL Server 2008でコミットする前に出力を確認しますか?

私は他のSQLツールを使用しましたが、コミットする前に脅迫的なクエリの出力を確認できるツールもあります。私はこの2ステップのプロセスが好きです(だから私は何か悪いことをしていないことを再確認することができます)。

SQL Server 2008 R2でクエリを「実行」し、影響を受ける行の出力を確認してから、コミットを受け入れるか破棄するかを選択する方法はありますか?

編集:

また、OUTPUT句を使用して別の回答で同じ質問をする別の質問を見つけました。

破壊的なSQLクエリをプレビューするにはどうすればよいですか?

18
psylinse

はい、これは可能です。セッションオプションSET IMPLICIT_TRANSACTIONS ONを使用するか、以下のように明示的なトランザクションを作成できます。

BEGIN TRAN

UPDATE YourTable 
SET foo=1
 /*To Review Changes can use OUTPUT clause here...*/
OUTPUT INSERTED.*, DELETED.*
WHERE bar=2


/*... or a SELECT against the table*/
SELECT *
FROM YourTable
WHERE bar=2


-- Execute the COMMIT or ROLLBACK commands when ready

ただし、開いているトランザクションは、トランザクションが完了するまでロックを保持し、他のトランザクションをブロックする可能性があることに注意する必要があります。したがって、これはマルチユーザー環境では注意して使用する必要があります。

27
Martin Smith
BEGIN TRAN TEST
UPDATE TABLE_NAME
SET Col='TEST'

結果を表示した後、トランザクションをCOMMITまたはROLLBACKすることができます。

使用する SELECT @@TRANCOUNT現在の接続で開いているトランザクションの数を確認します。

4
garnertb