私は他のSQLツールを使用しましたが、コミットする前に脅迫的なクエリの出力を確認できるツールもあります。私はこの2ステップのプロセスが好きです(だから私は何か悪いことをしていないことを再確認することができます)。
SQL Server 2008 R2でクエリを「実行」し、影響を受ける行の出力を確認してから、コミットを受け入れるか破棄するかを選択する方法はありますか?
編集:
また、OUTPUT句を使用して別の回答で同じ質問をする別の質問を見つけました。
はい、これは可能です。セッションオプション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
ただし、開いているトランザクションは、トランザクションが完了するまでロックを保持し、他のトランザクションをブロックする可能性があることに注意する必要があります。したがって、これはマルチユーザー環境では注意して使用する必要があります。
BEGIN TRAN TEST
UPDATE TABLE_NAME
SET Col='TEST'
結果を表示した後、トランザクションをCOMMIT
またはROLLBACK
することができます。
使用する SELECT @@TRANCOUNT
現在の接続で開いているトランザクションの数を確認します。