とりあえずのメモ。
SQL Server Management Studio(SSMS)でSQL文を実行した場合、初期状態だと処理完了と同時に自動的にコミット(オートコミット)されてしまいます。SELECT文などだといいのですが、乱雑にUpdateやDeleteが書き連ねられた状態でうかつにF5(実行)などを押すと大惨事が起きる事があるので、私は自動的にはコミットされず、必ず最後に「commit」を実行しないとデータに結果が反映されないように設定します。設定方法は下記の通り。
- [ツール]-[オプション]→「クエリ実行」→「SQL Server」→「ANSI」の設定画面を開く。
- 「SET IMPLICIT_TRANSACTIONS」(暗黙的なトランザクション)をONにする。
こんだけのようです。暗黙的なトランザクションをON、ということで、何も宣言しなくても勝手に「Begin Transaction」が宣言されたことになります(Select文等の参照は問題ありません)。
これにより、うっかりUpdateを掛けてしまって、気づかないうちに更新、という場合でも「Rollback Transaction」で戻せるようになります。その反面、うっかりトランザクションがかかる命令を実行してしまい、ほかの人からの参照処理などが全部ブロックされて待ち状態に、なんてこともあるので、やはり意識して処理を行う必要はあります。
絵で見てわかるSQL Serverの内部構造 (DB Magazine Selection)
- 作者: 平山理
- 出版社/メーカー: 翔泳社
- 発売日: 2009/03/03
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 73回
- この商品を含むブログ (6件) を見る