misc.log

日常茶飯事とお仕事と

SQL Server Management Studioでの自動コミットをオフにする

とりあえずのメモ。
SQL Server Management Studio(SSMS)でSQL文を実行した場合、初期状態だと処理完了と同時に自動的にコミット(オートコミット)されてしまいます。SELECT文などだといいのですが、乱雑にUpdateやDeleteが書き連ねられた状態でうかつにF5(実行)などを押すと大惨事が起きる事があるので、私は自動的にはコミットされず、必ず最後に「commit」を実行しないとデータに結果が反映されないように設定します。設定方法は下記の通り。

  1. [ツール]-[オプション]→「クエリ実行」→「SQL Server」→「ANSI」の設定画面を開く。
  2. 「SET IMPLICIT_TRANSACTIONS」(暗黙的なトランザクション)をONにする。

こんだけのようです。暗黙的なトランザクションをON、ということで、何も宣言しなくても勝手に「Begin Transaction」が宣言されたことになります(Select文等の参照は問題ありません)。

これにより、うっかりUpdateを掛けてしまって、気づかないうちに更新、という場合でも「Rollback Transaction」で戻せるようになります。その反面、うっかりトランザクションがかかる命令を実行してしまい、ほかの人からの参照処理などが全部ブロックされて待ち状態に、なんてこともあるので、やはり意識して処理を行う必要はあります。

絵で見てわかるSQL Serverの内部構造 (DB Magazine Selection)

絵で見てわかるSQL Serverの内部構造 (DB Magazine Selection)