SQL Server のことなら SQL Quality SQL Server パフォーマンス チューニング、コンサルティング、アドバイス、相談、定期診断、トレーニング

第55回:書籍「SQL Server 2016の教科書 開発編」(ソシム)が発刊されました

2016年7月28日

ソシムさんから「SQL Server 2016の教科書」を出していただきました!「SQL Server 2008の教科書」と「SQL Server 2012の教科書 開発編」の改訂版です。

SQL Server 2016の教科書

ソシムさんのページ
http://www.socym.co.jp/book/1062

表紙の色は若草色っぽくて、今までで一番気に入っています。
SQL Server 2016 というタイトルではありますが、改訂版ですから、構成は変えていません。前作同様、ほとんどがバージョンに関係なくお役に立てる内容となっています。

前作に引き続き、日本マイクロソフトの斎藤泰行様に推薦文を書いて頂くことができました。日本における SQL Server の牽引者ですね。
SQL Server について語って下さっているので、書店などでお手に取ってご覧になれる方は、ここだけでも必見です。

本書の概要、大枠の目次は上記のソシムさんのページにも載っているので、私の方では細かい目次を載せておきます。

書籍「SQL Server 2016の教科書」

【入門編】
第1章 SQL Server 2016の概要とインストール.......................... 2
1-1 SQL Server 2016の概要......................................................2
SQL Serverの一番の特徴は“使いやすさ!”...................................... 2
データ転送/データ分析ツールも標準同梱........................................ 4
開発ツール(Visual Studio)との連携が非常に良い............................... 5
SQL Serverの歴史.............................................................. 6
SQL Serverの信頼性は?........................................................ 7
SQL Serverは高パフォーマンス!................................................ 7
1-2 SQL Server 2016の製品ラインナップ..........................................8
SQL Server 2016 Enterprise.................................................... 8
SQL Server 2016 Standard...................................................... 9
SQL Server 2016 Express....................................................... 9
SQL Server 2016 Developer.................................................... 10
評価版(Evaluation)のダウンロード........................................... 10
1-3 SQL Server 2016 Developerエディションのインストール...................... 11
インストール要件............................................................. 11
Column エディション別の比較
インストールしてみよう....................................................... 12
Hint 後から機能を追加インストールする場合
Hint インスタンスとは?
Hint SQL Serverの名前はアプリからの接続時に利用される
Hint Windows ローカル ユーザー アカウントの作成
Hint サービス アカウントとは?
Hint ボリューム メンテナンス タスクを実行する特権を付与
Column 照合順序の変更
この章のまとめ............................................................... 28

第2章 インストール後の構成...................................................30
2-1 管理ツール(Management Studio)のインストール............................ 30
Management Studioのインストール.............................................. 31
Hint SSDTやVisual Studio 2015をインストールする場合の注意点
2-2 インストール後のメニュー................................................. 34
Column SQL Server 2014のオンライン ブックをローカルにインストールする方法
Column SQL Server Data Tools(SSDT)
2-3 SQL Server関連のサービス................................................. 40
各サービスの主な役割......................................................... 41
2-4 SQL Serverが正常に動作していることの確認................................. 43
2-5 システム データベース.................................................... 45
Column Resourceデータベース
2-6 インストール後のフォルダー構成........................................... 47
2-7 SQL Server 2008 R2や2012との共存......................................... 48
SQL Server の古いバージョンとの共存.......................................... 48
Column 筆者のSQL Server環境
この章のまとめ............................................................... 49

第3章 SQL Server 2016を使ってみよう..........................................50
3-1 とりあえず使ってみよう................................................... 50
データベースの作成........................................................... 50
テーブルを作ってみよう....................................................... 52
Column SQL ServerとOracleのデータベースの違い
3-2 SQLでデータの追加と検索.................................................. 56
SQLとは...................................................................... 56
Column SQLの呼び方は?
Column SQLの方言(ダイアレクト)
SQLを使ってみよう .クエリ エディターの使い方................................. 58
データベースへの接続 ~USE~................................................. 58
Hint クエリ エディターのインテリセンス機能.
3-3 データの追加 .INSERT..................................................... 60
Hint SQLの実行に[F5]キーまたは[Ctrl]+[E]キー
Hint SQLステートメント内の記号は半角で入力
Hint 赤字のエラー メッセージが表示される場合
大文字と小文字の区別は?..................................................... 63
改行はどこに入れる?......................................................... 63
半角スペースの数やタブは?................................................... 63
追加したデータを確認してみよう ~SELECT~.................................... 64
Hint データの追加は行単位
列名を列挙する構文 ~INSERT~................................................ 65
Column 列名を列挙したほうがよい?
Column Management StudioのINSERTステートメントのテンプレート
Hint 1ステートメントで複数行追加?
3-4 データの検索(SELECT)................................................... 69
すべての列を取得する「*」.................................................... 69
列を絞り込む................................................................. 69
行を絞り込む ~WHERE句~..................................................... 70
3-5 データの更新(UPDATE)と 削除(DELETE).................................. 71
データベースのフル バックアップ.............................................. 71
データの更新 .UPDATE......................................................... 72
データの削除 .DELETE......................................................... 73
データベースの復元(リストア)............................................... 74
Hint ステートメント(スクリプト)の保存
Hint テーブルの作成も「SQL」で
Column クエリ エディターを快適に使おう
Column GUI操作でデータの追加や更新を行う
この章のまとめ............................................................... 80

第4章 正規化.................................................................82
4-1 正規化とは............................................................... 82
正規化の必要性 .冗長とは..................................................... 82
4-2 関数従属とキー........................................................... 84
関数従属と主キーの考え方..................................................... 85
Column 正確には「候補キー」
主キーの追加(識別子の追加)................................................. 87
複合主キーの利用............................................................. 88
Hint 識別子(ID)の身近な例
主キーに求められる特性....................................................... 89
“ 意味を持った”主キーに注意................................................ 91
4-3 正規化の手順............................................................. 92
Hint コードは主キーに向いていない?
正規化の例:受注伝票......................................................... 93
第1正規化 .繰り返し項目の分離................................................ 94
第2正規化 .部分キーに従属する項目の分離...................................... 95
第3正規化 .非キーに従属する項目の分離........................................ 96
リレーションシップと外部キー................................................. 97
Hint ER図(ERダイアグラム)
導出項目(作出項目)を排除する............................................... 99
Column 導出項目をあえて残す(正規化を崩す)
いろいろな単価...............................................................100
Column 複合主キー(自然キー) vs. 人工キー
この章のまとめ.............................................................. 105
Hint 正規化のポイント .1 fact in 1 place

第5章 制約................................................................. 106
5-1 制約とは................................................................ 106
Column 整合性とは
5-2 この章で使用するテーブル................................................ 107
5-3 PRIMARY KEY制約(主キー制約)........................................... 108
PRIMARY KEY制約の設定........................................................109
Hint[ 保存]ボタンをクリックし忘れないように
Hint 重複データが存在する場合のエラー
Hint“ 変更の保存が許可されていません”エラーが発生する場合
PRIMARY KEY制約の効果を確認..................................................112
Hint 制約の名前にも注目
Column SQLでPRIMARY KEY制約の設定
複合主キーの場合.............................................................114
Column SQLで複合主キーを設定する場合
5-4 UNIQUE制約.............................................................. 115
Column OracleのUNIQUE制約との違い
UNIQUE制約の設定.............................................................116
Column SQLでUNIQUE制約の設定
UNIQUE制約の効果を確認.......................................................118
5-5 CHECK制約............................................................... 118
CHECK制約の設定..............................................................118
Column SQLでCHECK制約の設定
CHECK制約の効果を確認........................................................120
Column CHECK制約の無効化
5-6 FOREIGN KEY制約......................................................... 122
FOREIGN KEY制約を試してみよう................................................122
Column SQLで列の追加
FOREIGN KEY制約の設定........................................................125
Column ERダイアグラムでFOREIGN KEY制約を設定.
FOREIGN KEY制約の効果を確認..................................................129
Column SQLでFOREIGN KEY制約の設定
Column FOREIGN KEY制約とパフォーマンス
Column 連鎖更新、連鎖削除オプション
この章のまとめ.............................................................. 131

第6章 SQLステートメントの基本(ANSI SQL92準拠)............. 132
6-1 この章で使用するテーブル................................................ 132
SELECTステートメントのおさらい...............................................134
6-2 データを並べ替える .ORDER BY............................................ 134
DESCキーワードで降順に並べ替え...............................................135
複数列の指定.................................................................135
Column NULL値の並べ替え順
Hint ORDER BY句を指定しない場合の並べ替え順は保証されない
Hint 漢字の場合の並べ替え順
ORDER BY句はどこへ書けばよい?...............................................137
Column ORDER BY句には数値も指定できる
Hint 構文内の大カッコ [ ] や | に慣れよう
6-3 WHERE句で利用できる演算子............................................... 139
比較演算子...................................................................139
論理演算子 .AND、OR、NOT.....................................................140
BETWEEN演算子................................................................141
IN演算子.....................................................................143
NULL値の検索 .IS NULL........................................................144
LIKE演算子 .文字データのワイルドカード検索...................................144
Hint キーワード検索はパフォーマンスに注意
Hint 単一引用符「'」は「''」にする
Hint「 _」や「%」が入った文字をLIKEで検索するには
6-4 その他の演算子.......................................................... 148
算術演算子...................................................................148
Hint NULL値に対する演算結果はNULL
Hint 演算結果の列名と列の別名(AS ~)
Hint ASの別名が既存の列名と同じ場合に注意
Hint 名前の命名規則に注意
文字列連結演算子の+..........................................................152
この章のまとめ.............................................................. 153

第7章 SQLステートメントの応用(ANSI SQL92準拠)............. 154
7-1 集計関数とグループ化.................................................... 154
集計関数.....................................................................154
Hint 集計関数ではNULL値が無視される
GROUP BY句でグループ化.......................................................157
7-2 複数テーブルの結合...................................................... 159
内部結合(Inner Join).......................................................160
クエリ デザイナーで結合演算をGUI生成.........................................163
Column INNER JOINを利用しない内部結合(SQL92規格外)
Column 自己結合
GROUP BY句と結合演算.........................................................165
Hint MAXやMINを使う方法
7-3 外部結合 .OUTER JOIN.................................................... 167
RIGHT OUTER JOINを使ってみよう...............................................167
LEFT OUTER JOIN..............................................................168
Column OUTER JOINを利用しない外部結合(SQL92規格外)
7-4 その他のSQL92規格....................................................... 170
重複データの排除 .DISTINCT...................................................170
サブクエリ(副問い合わせ)...................................................170
Column クエリとは?
Hint サブクエリはカッコ内のSELECTを先に解釈
Hint UPDATEでサブクエリ
UNION ALLで結果の連結........................................................174
Hint UNIONよりもUNION ALLを使う
Hint UNIONはデータ型と列数が同じであれば連結可能
CASE式.......................................................................177
Hint CASE式は選択リスト以外でも利用可能
Column CASE式はOracleでのDECODE関数、AccessでのIIF
7-5 3つ以上のテーブルの結合................................................. 180
Column JOINに記述したテーブル順に処理させる ~FORCE ORDER~
Hint クエリ デザイナーでGUI操作で結合
売上集計を行う集計関数とGROUP BY句...........................................186
Column Reporting Servicesでグラフ化
GROUP BY句で複数の列を指定...................................................189
ROLLUPとCUBE(SQL99規格)....................................................190
Column Cube(キューブ)= 立方体
クロス集計形式で結果を取得...................................................192
Column PIVOTによるクロス集計
7-6 ビュー ~仮想表~.......................................................... 194
ビューの作成.................................................................194
Column Accessのクエリ機能に相当
Hint ビュー デザイナーでGUI操作でビューを作成
前年金額の取得...............................................................197
Column ビュー経由の更新
累積金額の取得...............................................................199
Hint SQL Server 2012からはLAG関数で前年同月を取得
Hint SQL Server 2012からはウィンドウ操作で累積金額を取得
この章のまとめ.............................................................. 200

第8章 テーブル関連の操作とデータのインポート/エクスポート.... 202
8-1 テーブルのコピー ~SELECT INTO~........................................ 202
8-2 データのみのコピー ~INSERT SELECT~.................................... 204
Column OracleではCREATE TABLE ~AS~
8-3 IDENTITYプロパティで自動採番............................................ 206
Hint テーブル デザイナーでIDENTITYプロパティを設定
Column Oracleでのシーケンス(順序)、Accessでのオートナンバー
IDENTITYを設定した列に値を追加...............................................208
Hint PRIMARY KEY制約違反に注意
Hint アプリケーションからIDENTITY値の取得
8-4 データの全削除を高速に実行 .TRUNCATE TABLE.............................. 212
8-5 DEFAULT値(既定値)..................................................... 212
Hint テーブル デザイナーでDEFAULT値を設定
Column DEFAULT制約?
8-6 CSVファイル出力(エクスポート)......................................... 215
Management StudioでCSV出力...................................................215
bcpコマンドでCSV形式へ.......................................................216
bcpでCSVファイルのインポート.................................................217
Integration ServicesでCSV形式へ..............................................218
Column bcpは何の略?
Hint bcpコマンドの注意点
8-7 Integration Servicesでデータのインポート................................ 222
Integration Servicesでのインポート手順.......................................222
Hint 主キーとリレーションシップはコピーされない
Column Oracleデータベースのインポート
Column SQLステートメントでデータのインポート
この章のまとめ.............................................................. 231

第9章 照合順序、データ型................................................... 232
9-1 この章で使用するテーブル................................................ 232
9-2 照合順序(Collation)................................................... 233
照合順序について.............................................................233
Hint 半角スペースと全角スペースは区別される?
照合順序の設定...............................................................235
Hint サーバーの照合順序は慎重に
Hint データベースの照合順序はテーブル名にも影響あり
Column Oracleでの大文字と小文字の区別
Hint“ 変更の保存が許可されていません”エラーが発生する場合
Column SQLで列単位の照合順序を設定する
照合順序とORDER BY句.........................................................243
Column 照合順序の一覧
9-3 データ型................................................................ 244
Hint SQL単位の照合順序はなるべく利用しないように
charとvarchar ~文字~.......................................................245
Hint 社員テーブルを作成していない場合
Hint WHERE句の条件式では余分な空白は無視される
Column ('' 空文字)とNULL値の区別?
8000バイト超えの文字 ~varchar(max)~........................................248
Hint SQL Server 2000までのtext型は下位互換用
Column CLOBデータ型?
Unicodeの扱い .nchar、nvarchar...............................................249
Hint Unicodeを表示できないクライアント
Hint Windows Vista以降でサポートされるJIS2004
bigint、int、smallint、tinyint .整数.........................................251
Hint 小さいデータ型を選択しよう
Hint 数字をchar型で格納した場合
decimal、numeric .真数データ型...............................................256
real、float .概数データ型....................................................257
money、smallmoney .金額......................................................258
datetime、smalldatetime、date、time .日付と時刻..............................258
Hint 日付のBETWEENに注意
この章のまとめ.............................................................. 261

第10章 関数とユーザー定義関数.............................................. 262
10-1 この章で使用するテーブル............................................... 262
10-2 文字列操作関数......................................................... 263
RTRIMで右側の半角スペースの削除..............................................263
Hint 関数の結果のみを確認する
LTRIMで左側の半角スペースの削除..............................................264
Hint REPLACEで全角スペースを削除
RIGHTとLEFTで部分抽出........................................................265
SUBSTRINGで部分抽出..........................................................266
UPPERとLOWERで大文字・小文字変換.............................................266
Hint 検索条件を関数処理する場合は注意
Column Oracleとの関数比較(文字列)
10-3 日付と時刻の操作関数................................................... 269
YEARとMONTHで日付の年と月を取得..............................................269
DATEPARTで日付と時刻の一部を取得.............................................270
DATEADDで日付の加算、減算....................................................271
EOMONTHで月末を取得..........................................................272
DATEFROMPARTSで文字列から日付データを作成....................................272
FORMATで日付データの書式を変更...............................................272
10-4 変換関数 ~CONVERTとCAST~............................................... 273
Hint CONVERTとCASTはどちらを利用する?
Column *1.0の追加はdecimal(n,1)と等価
CONVERTで日付と時刻を文字列変換..............................................275
Hint SQL Server 2008 R2以前での月末の取得
Column Oracleとの関数比較(日付と時刻、型変換)
10-5 数値操作の関数......................................................... 278
Column Oracleとの関数比較(数値)
10-6 その他の関数........................................................... 279
NULL操作の関数(ISNULL、COALESCE)...........................................279
IIF関数による条件分岐........................................................279
CHOOSE関数による指定した値の取得.............................................280
その他の関数.................................................................280
10-7 ユーザー定義関数....................................................... 282
ユーザー定義関数の作成.......................................................282
両端の空白を除去するユーザー定義関数.........................................283
Hint ユーザー定義関数のパフォーマンスは?
Column SQL Server Migration Assistant for Oracle V6.1でOracle関数の移行
10-8 .NET Framework言語を使ったユーザー定義関数(SQLCLR)................. 285
SQLCLR(CLR統合)の利点......................................................285
CLRユーザー定義関数を作成する手順............................................285
Hint Management Studioを先にインストールしている場合はVS Shellを削除
CLRユーザー定義関数の作成例..................................................295
Hint CLRユーザー定義関数で利用できるクラス ライブラリと制限
10-9 CLRユーザー定義関数のパフォーマンスは?................................ 297
この章のまとめ.............................................................. 299

第11章 Transact-SQL(T-SQL)の基本................................. 300
11-1 Transact-SQLの構成要素................................................. 300
ローカル変数の利用(DECLARE)................................................300
Hint SETステートメントでは、複数の変数を一度に扱えない
バッチ(go)と変数の範囲.....................................................302
SELECTステートメントの結果をローカル変数へ代入...............................302
文末(セミコロンと半角スペース).............................................303
Hint SELECTステートメントの結果が1件になるようにWHERE句の条件式を指定
コメント(-- と /* */)......................................................304
PRINTステートメント..........................................................304
Hint 半角スペースでの文末はTransact-SQL独特.
IFによる条件分岐.............................................................305
IF ~ ELSE...................................................................307
Column CASE式による条件分岐
IIF EXISTS、IF NOT EXISTS....................................................309
WHILE によるループ処理.......................................................310
GOTOによるジャンプ...........................................................311
WAITFOR DELAYによる待機......................................................311
Column Oracle PL/SQLとの比較
11-2 動的SQL(EXEC、sp_executesql)......................................... 313
テーブル名や列名の変数化(パラメーター化)...................................313
EXECUTEステートメントによる動的SQL...........................................314
sp_executesqlによる動的SQL...................................................315
sp_executesqlでのパラメーター化..............................................316
Hint テーブル名や列名のパラメーター化はできない
11-3 TOP句での上位N件の取得................................................. 318
Management Studioの上位1000行の選択..........................................318
TOP句での変数................................................................319
Hint TOP句は更新系のステートメントでも利用可能
11-4 MERGE(UPSERT)........................................................ 320
Column 一括インポート時にMERGEを利用
11-5 順位付け関数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)......... 322
RANK、DENSE_RANK、NTILE......................................................322
PARTITION BY句によるグループ化...............................................323
ROW_NUMBERによるページング(n件目からm件目の取得)...........................324
Hint ROW_NUMBER関数の利用しすぎに注意
11-6 ページング(OFFSET . FETCH)........................................... 325
Hint インライン ビュー
11-7 CTE(共通テーブル式).................................................. 326
Hint インライン ビューとCTEの使い分け
Column CTEと再帰クエリ
11-8 一時テーブルによる結果の一時的な保存................................... 329
Hint インライン ビューとCTE、一時テーブルの使い分け
11-9 テーブル変数........................................................... 331
Hint テーブル変数と一時テーブルの使い分け
Hint テーブル変数を配列のように利用する
この章のまとめ.............................................................. 332

【開発編】
第12章 データベース アプリケーションの開発........................... 334
12-1 データベースAPI~ADO.NET~............................................. 334
Column 過去のデータベースAPI
12-2 ADO.NETを使ってみよう.................................................. 336
Hint Visual Studio Community 2015を利用する場合
System.Data.SqlClient名前空間................................................338
Hint インテリセンス(IntelliSense)による入力補完
Usingや例外処理を追加してより良いコードへ....................................342
Hint 実行時にエラーが出る場合
Hint VBでのTry . Catch(例外処理)
12-3 SQL Server Profilerによるデバッグ...................................... 344
SQL Server Profilerを使ってみよう............................................344
トレース プロパティの編集....................................................349
Column トレース ファイルの再生.
12-4 SQLの動的生成とSQLインジェクション..................................... 353
SQLの動的生成................................................................353
SQLを動的生成する場合の問題点................................................354
Hint アプリから内部実行されるSQLを捕獲
SQLのパラメーター化によるSQLインジェクション対策.............................358
Hint パラメーターが文字データの場合
Column プロシージャ キャッシュとは
12-5 更新系SQLの実行........................................................ 363
ExecuteNonQueryメソッド......................................................363
この章のまとめ.............................................................. 364

第13章 ストアド プロシージャ............................................... 366
13-1 ストアド プロシージャ.................................................. 366
ストアド プロシージャのメリット..............................................366
13-2 ストアド プロシージャの作成............................................ 367
ストアド プロシージャの実行 .EXEC............................................368
Hint バッチの先頭に記述する必要があるステートメント
Hint ビューとの違い.
13-3 入力パラメーターの利用................................................. 369
Hint ストアド プロシージャの削除
ADO.NETからストアド プロシージャの実行.......................................373
Hint パラメーター化した場合の未入力チェック
LIKE演算子のパラメーター化...................................................376
IN演算子のパラメーター化.....................................................377
Hint IN演算子の値やLIKE演算子のキーワードが動的に変化する場合
Column Management Studioからストアド プロシージャの作成
13-4 ストアド プロシージャのデバッグ........................................ 380
SQL Server Data Toolsを利用したストアド プロシージャのデバッグ...............381
Column[ ローカル]ウィンドウが表示されない場合
Column SQL Server Data Toolsのスキーマ比較機能
13-5 OUTPUT(出力)パラメーター............................................. 386
ADO.NETから出力パラメーターの取得............................................387
Column 出力パラメーターがある場合はSQL Server Data Toolsからのデバッグが便利
出力パラメーターでIDENTITY値の取得...........................................389
Column ADOの場合はSET NOCOUNT ONが必要だった
Column ストアド プロシージャを利用しないIDENTITY値の取得
Hint IDENTITYは完全な連番ではない?
Column @@IDENTITY vs. SCOPE_IDENTITY
13-6 RETURNコード........................................................... 396
RETURNコードの取得...........................................................396
ADO.NETからRETURNコードの取得................................................397
13-7 ストアド プロシージャ定義の表示........................................ 397
sys.sql_modules..............................................................398
Column SQL Server 2000の場合はsyscomments
この章のまとめ.............................................................. 399

第14章 トランザクションとエラー処理..................................... 400
14-1 トランザクションとは................................................... 400
トランザクションの役割.......................................................401
ロールバックとコミット.......................................................402
1つのステートメントで複数のデータを更新する場合..............................402
Column 原子性(Atomicity)
14-2 SQL Serverにおけるトランザクションの実装............................... 403
Column All or Nothing
Hint OracleやDB2でのトランザクションの実装
Hint 明示的 vs. 暗黙的トランザクション
14-3 トランザクションの例................................................... 405
連番管理処理の例.............................................................406
14-4 ロールバックされない処理(制約違反エラー)............................. 408
Hint ネストしたトランザクションの注意点
SET XACT_ABORT ONの追加......................................................409
例外処理の追加 .TRY CATCH....................................................410
Hint ROLLBACKを記述しなかった場合
Column SQL Server 2000のときの例外処理
エラー メッセージの取得 .ERROR_MESSAGE.......................................413
Column SQL Server 2000ではエラー メッセージを取得できない
Hint キャッチできないエラー
14-5 エラーの再スローとユーザー定義エラー................................... 415
THROWによるエラーの再スロー..................................................415
ユーザー定義エラーの発生 ~RAISERROR~.......................................415
アプリケーション側でのエラーの取得...........................................417
Column ADOでのエラー取得にはSET NOCOUNT ONが必要
14-6 ADO.NETでトランザクション ~SqlTransaction~............................. 419
System.Transaction...........................................................420
Hint 分離レベルの注意点
この章のまとめ.............................................................. 422
Hint TransactionScopeは複数接続時にMSDTCが利用される

第15章 ロックと分離レベル.................................................. 424
15-1 ロックとは............................................................. 424
ロックの必要性...............................................................424
ロックの種類.................................................................426
ロックの保持期間.............................................................427
Management Studioからロック状況の監視........................................429
ロック待ちのタイムアウト.....................................................431
Column SQLステートメントでロック状況の監視
ロックの粒度.................................................................432
Column ページやエクステントとは?
Hint ロック エスカレーションの監視
Column Oracle と同じように動作させたい場合
Hint ロック エスカレーションの無効化
15-2 デッドロック........................................................... 435
Column Oracleのデッドロック時の動作
デッドロックの監視...........................................................437
Column SQL Server 2000ではトレース フラグ1204
Column Deadlock graph(デッドロックのグラフィカル表示)
15-3 トランザクションの分離とIsolation Level................................ 439
Isolation Leve(l 分離レベル)とは...........................................440
SQL Serverでの分離レベルの変更...............................................441
15-4 ダーティ リードとRead UnCommitted...................................... 443
Column COM+コンポーネントの場合(VB 6.0など)
Hint Read UnCommittedはパフォーマンス向上がメリット
ダーティ リードの回避........................................................445
15-5 反復読み取り不可: Non Repeatable Read................................. 446
反復読み取り不可の回避 .Repeatable Read......................................449
Repeatable Read の注意点 .デッドロックの多発.................................453
更新ロックによる変換デッドロックの回避.......................................454
Column OracleでのSELECT … FOR UPDATE
15-6 ファントム読み取り(Phantom Read)..................................... 458
ファントム読み取りの回避 .Serializableレベル.................................460
Serializableの問題点 .デッドロックの多発.....................................461
Column TransactionScopeとCOM+コンポーネントのデフォルトはSerializable
15-7 楽観的(オプティミスティック)同時実行制御............................. 462
楽観的同時実行制御の実装方法.................................................462
Column ASP.NETでの楽観的同時実行制御の自動実装
Hint ADO.NETでは0.333秒に注意
この章のまとめ.............................................................. 466

第16章 ロックの実践と読み取り一貫性..................................... 468
16-1 テーブル スキャンによるロック待ち...................................... 468
読み取り一貫性によるロック待ちの回避.........................................469
推定実行プランの確認.........................................................469
Column インデックスとは
Column クラスター化インデックスではClustered Index Scan
テーブル スキャンによるロック待ちの回避方法..................................471
16-2 読み取り一貫性......................................................... 473
READ_COMMITTED_SNAPSHOT......................................................474
スナップショット分離レベル(Snapshot Isolation Level).......................476
16-3 読み取り一貫性のオーバーヘッド......................................... 481
tempdb(Version Store)の監視................................................481
スナップショット データの保持期間............................................482
この章のまとめ.............................................................. 483

付録 SQL Serverへの接続方法と提供される機能のまとめ......... 484
A-1 ネットワークを介したSQL Serverへの接続.................................. 484
ネットワーク接続の有効化(Developer/Expressエディションのみ)...............484
ファイアウォールの開放(TCP 1433)...........................................485
A-2 SQL Serverの各バージョンで提供された代表的な機能........................ 488
SQL ServerはBI (データ分析)機能の進化がスゴイ!............................489
SQL Server 2005から提供された主な新機能......................................494
SQL Server 2008から提供された主な新機能......................................496
SQL Server 2012から提供された主な新機能......................................500
SQL Server 2014から提供された主な新機能......................................503
A-3 SQL Server 2016の主な新機能............................................. 505
インメモリOLTPと列ストア インデックスの進化/融合............................506
R統合(SQL Server R Services)...............................................507
セキュリティの強化...........................................................510
その他.......................................................................511
A-4 今後の情報源............................................................ 512
この章のまとめ.............................................................. 513

ということで、どれも SQL Server の技術者ならば必須の内容となっています。
私自身も改訂の度に何度も熟読するのですが、内容的にとても気に入っている本です。
機会がございましたら、ぜひお手を取ってご覧いただければと思います。

■ おわりに
先月末に誕生日を迎えました。今年は記念すべき区切りの歳なので、この本が出せてとても嬉しいです。

桜の花

何といっても SQL Server は多機能ですから、基礎としての機能としても、本書にもっと追加したい内容があるのですが、執筆だけならともかく校正作業の負荷までを考えると(実は書き下ろし書籍だと、この段階が一番大変だったりします。私達 IT エンジニアにとっては、想像を超えるアナログの世界なので)、思い切った追加ができない状況となっています。

今回扱えなかった内容は、もう少し効率の良い方法で、いずれ何かしらの形でカバーできればと考えています。


事例1

SQLQualityは執筆とセミナーを通じて技術の啓蒙やエンジニアの育成支援も行っています
最新刊
SQL Server 2016 の教科書
SQL Server 2016 の教科書(ソシム)

弊社オリジナル制作の
SQL Server 2016 自習書も
マイクロソフトのサイトで公開中!
ダウンロードはこちら
セミナー風景
セミナー風景

ロングセラー
ASP.NET でいってみよう  SQL Server 2000 でいってみよう
ASP.NET でいってみよう
第7刷 16,500 部発行
SQL Server 2000 でいってみよう
第12刷 28,500 部発行
SQL Server 2014 CTP2 インメモリ OLTP 機能の概要
SQL Server 2014 CTP2 インメモリ OLTP 機能の概要(Amazon Kindle 書籍)

弊社執筆の
SQL Server 2014 自習書
マイクロソフトのサイトで公開中
目次はこちら

弊社執筆の
SQL Server 2012 自習書
マイクロソフトのサイトで公開中
ダウンロードはこちら
松本美穂のコラム
(公開活動などのお知らせ)

第60回:SQL Server 2017 自習書 No.3「SQL Server 2017 Machine Learning Services」のご案内
第59回:SQL Server 2017 自習書 No.2「SQL Server 2017 on Linux」のご案内
第58回:SQL Server 2017 自習書 No.1「SQL Server 2017 新機能の概要」のご案内
第57回:SQL Server 2017 RC 版とこれまでのドキュメントのまとめ
第56回:「SQL Server 2016 への移行とアップグレードの実践」完成&公開!
第55回:書籍「SQL Server 2016の教科書 開発編」(ソシム)が発刊されました
第54回:「SQL Server 2016 プレビュー版 Reporting Services の新機能」自習書のお知らせ
第 53 回:SQL Server 2016 Reporting Services の新しくなったレポート マネージャーとモバイル レポート機能
第 52 回:SQL Server 2016 の自習書を作成しました!
第 51 回:PASS Summit と MVP Summit で進化を確信!
第 50 回:新しくなった Power BI(2.0)の自習書を作成しました!
第49 回:Excel 2016 の Power Query を使う
第 48 回:新しくなった Microsoft Power BI ! 無料版がある!!
第 47 回:「Microsoft Azure SQL Database 入門」 完成&公開!
第 46 回:Microsoft Power BI for Windows app からの Power BI サイト アクセス
第 45 回:Power Query で取得したデータを PowerPivot へ読み込む方法と PowerPivot for Excel 自習書のご紹介
第44回:「SQL Server 2014 への移行とアップグレードの実践」ドキュメントを作成しました
第43回:SQL Server 2014 インメモリ OLTP 機能の上級者向けドキュメントを作成しました
第42回:Power Query プレビュー版 と Power BI for Office 365 へのクエリ保存(共有クエリ)
第41回:「SQL Server 2014 CTP2 インメモリ OLTP 機能の概要」自習書のお知らせです
第40回: SQL Server 2012 自習書(HTML版)を掲載しました
第39回: Power BI for Office 365 プレビュー版は試されましたか?
第38回: SQL Server 2014 CTP2 の公開
第37回: SQL Server 2014 CTP1 の自習書をご覧ください
第36回: SQL Server 2014 CTP1 のクラスター化列ストア インデックスを試す
第35回: SQL Server 2014 CTP1 のインメモリ OLTP の基本操作を試す
第34回: GeoFlow for Excel 2013 のプレビュー版を試す
第33回: iPad と iPhone からの SQL Server 2012 Reporting Servicesのレポート閲覧
第32回: PASS Summit 2012 参加レポート
第31回: SQL Server 2012 Reporting Services 自習書のお知らせ
第30回: SQL Server 2012(RTM 版)の新機能 自習書をご覧ください
第29回: 書籍「SQL Server 2012の教科書 開発編」のお知らせ
第26回: SQL Server 2012 の Power View 機能のご紹介
第25回: SQL Server 2012 の Data Quality Services
第24回: SQL Server 2012 自習書のご案内と初セミナー報告
第23回: Denali CTP1 が公開されました
第22回 チューニングに王道あらず
第21回 Microsoft TechEd 2010 終了しました
第20回 Microsoft TechEd Japan 2010 今年も登壇します
第19回 SQL Server 2008 R2 RTM の 日本語版が公開されました
第18回 「SQL Azure 入門」自習書のご案内
第17回 SQL Server 2008 自習書の追加ドキュメントのお知らせ
第16回 SQL Server 2008 R2 自習書とプレビュー セミナーのお知らせ
第15回 SQL Server 2008 R2 Reporting Services と新刊のお知らせ
第14回 TechEd 2009 のご報告と SQL Server 2008 R2 について
第13回 SQL Server 2008 R2 の CTP 版が公開されました
第12回 MVP Summit 2009 in Seattle へ参加

技術コミュニティでも活動中
松本崇博 Blog(SQL Server Tips)
松本美穂ブログ(SQL Serverノート)