第Ⅰ部分 入 門
第1章 SQL Server世界 3
1.1 SQL Server發展簡史 3
1.2 數據庫市場中的SQL Server 4
1.2.1 SQL Server的競爭對手 4
1.2.2 SQL社區的強大之處 4
1.3 SQL Server的組件 5
1.3.1 數據庫引擎 5
1.3.2 服務 5
1.3.3 商業智能 6
1.3.4 工具和附加組件 7
1.3.5 聯機資源 9
1.4 SQL Server 2012的版本 9
1.5 SQL Server 2012的顯著增強 10
1.6 小結 11
第2章 數據架構 12
2.1 信息架構原則 12
2.2 數據庫目標 13
2.2.1 適用性 13
2.2.2 可擴展性 14
2.2.3 數據完整性 14
2.2.4 性能/可擴展性 15
2.2.5 可用性 15
2.2.6 安全性 15
2.3 智能數據庫設計 17
2.3.1 數據庫係統 17
2.3.2 物理架構 18
2.3.3 基於集的查詢 19
2.3.4 索引 19
2.3.5 並發性 19
2.3.6 高級可擴展性 20
2.3.7 性能框架 20
2.3.8 爭議和異議 21
2.4 小結 21
第3章 安裝SQL Server 23
3.1 準備服務器 24
3.1.1 硬件和軟件需求 24
3.1.2 適當修補 25
3.1.3 防火牆 25
3.2 選擇版本 26
3.2.1 不同版本之間的區彆 27
3.2.2 以後的降級 27
3.2.3 以後的升級 29
3.2.4 許可方麵的區彆 30
3.3 安裝過程 31
3.3.1 SQL Server 2012安裝中心 32
3.3.2 通過安裝中心安裝
SQL Server 2012 33
3.3.3 通過命令行安裝
SQL Server 2012 41
3.3.4 通過PowerShell安裝
SQL Server 2012 43
3.3.5 完成安裝後的任務 46
3.4 小結 49
第4章 客戶端連接 50
4.1 啓用服務器連接 50
4.1.1 服務器配置管理器 51
4.1.2 SQL本地客戶端連接(SNAC) 52
4.2 SQL Server本地客戶端特性 52
4.2.1 對LocalDB的本地
客戶端支持 53
4.2.2 元數據發現 53
4.2.3 高可用性/災難恢復支持 53
4.2.4 改進的日期/時間支持 53
4.2.5 訪問擴展事件日誌中的
診斷信息 54
4.2.6 ODBC特性 54
4.2.7 多活動結果集(MARS) 54
4.2.8 XML數據類型 55
4.2.9 用戶定義類型 55
4.2.10 大值類型 55
4.2.11 文件流支持 55
4.2.12 過期密碼處理 55
4.2.13 快照隔離 56
4.3 小結 56
第5章 SQL Server管理和開發工具 57
5.1 組織界麵 58
5.1.1 窗口放置 59
5.1.2 上下文菜單 61
5.2 Registered Servers 61
5.2.1 管理服務器 61
5.2.2 服務器組 62
5.3 Object Explorer 63
5.3.1 導航樹 63
5.3.2 篩選Object Explorer 65
5.3.3 Object Explorer Details頁麵 65
5.3.4 錶設計器 65
5.3.5 創建數據庫關係圖 66
5.3.6 Query Designer 67
5.3.7 Object Explorer報錶 68
5.4 使用Query Editor 69
5.4.1 打開連接到服務器的查詢 69
5.4.2 打開.sql文件 70
5.4.3 快捷方式和書簽 71
5.4.4 查詢選項 72
5.4.5 執行SQL批處理 72
5.4.6 結果 73
5.4.7 查看查詢執行計劃 73
5.5 使用Solution Explorer 74
5.6 以模闆和代碼片段為
基礎編寫代碼 74
5.6.1 模闆的使用 74
5.6.2 代碼片段的使用 75
5.7 小結 75
第Ⅱ部分 建立數據庫和處理數據
第6章 基本的查詢流 79
6.1 瞭解查詢流 80
6.1.1 查詢語句的語法流 80
6.1.2 查詢語句的圖形化視圖 80
6.1.3 查詢語句的邏輯流 82
6.1.4 查詢語句的物理流 82
6.2 From 子句數據源 83
6.2.1 可能的數據源 83
6.2.2 錶彆名 84
6.2.3 錶名稱 85
6.2.4 完全限定的名稱 85
6.3 WHERE條件 86
6.3.1 使用BETWEEN搜索條件 86
6.3.2 與列錶比較 87
6.3.3 使用LIKE搜索條件 89
6.3.4 多個WHERE條件 91
6.4 列、星號、彆名和錶達式 92
6.4.1 星號 92
6.4.2 彆名 93
6.4.3 限定的列 94
6.5 結果集排序 94
6.5.1 通過使用列名稱來指定順序 95
6.5.2 使用錶達式指定順序 96
6.5.3 使用列彆名指定順序 97
6.5.4 使用列的順序位置 97
6.5.5 ORDER BY和排序規則 97
6.6 SELECT DISTINCT 99
6.7 TOP()謂詞 100
6.7.1 WITH TIES選項 102
6.7.2 隨機行選擇 102
6.8 小結 103
第7章 關係數據庫設計和創建
物理數據庫架構 104
7.1 數據庫基礎知識 104
7.1.1 數字化數據庫的優點 105
7.1.2 錶、行和列 105
7.1.3 數據庫設計階段 106
7.1.4 規範化 106
7.1.5 三個“一規則” 107
7.1.6 標識實體 107
7.1.7 泛化 108
7.1.8 主鍵 109
7.1.9 外鍵 109
7.1.10 基數 110
7.1.11 可選性 110
7.2 數據設計模式 111
7.2.1 一對多模式 112
7.2.2 一對一模式 112
7.2.3 多對多模式 112
7.2.4 超型/子型模式 114
7.2.5 域完整性查找模式 115
7.2.6 遞歸模式 116
7.2.7 數據庫設計層 118
7.3 範式 118
7.3.1 第一範式(1NF) 118
7.3.2 第二範式(2NF) 119
7.3.3 第三範式(3NF) 120
7.3.4 Boyce-Codd 範式(BCNF) 121
7.3.5 第四範式(4NF) 122
7.3.6 第五範式(5NF) 122
7.4 戰略考慮事項 122
7.4.1 何時在不同的數據庫中
單獨存儲錶 122
7.4.2 何時使用何種架構 123
7.5 小結 123
第8章 數據類型、錶達式和
標量函數 124
8.1 數據類型 124
8.1.1 字符數據類型 124
8.1.2 數值數據類型 125
8.1.3 日期/時間數據類型 125
8.1.4 其他數據類型 126
8.2 構建錶達式 126
8.2.1 運算符 127
8.2.2 按位運算符 128
8.2.3 CASE錶達式 130
8.2.4 SQL Server 2012新增的
邏輯函數 132
8.2.5 使用空值 133
8.3 標量函數 138
8.3.1 用戶定義函數 138
8.3.2 日期和時間函數 139
8.3.3 SQL Server 2012新增的函數 142
8.4 字符串函數 143
8.4.1 SUBSTRING(string,
starting position,length) 144
8.4.2 STUFF(string,insertion
position,delete count,
string inserted) 144
8.4.3 CHARINDEX(search string,
string,starting position) 144
8.4.4 PATINDEX(pattern,string) 144
8.4.5 RIGHT(string,count)和
LEFT(string,count) 145
8.4.6 LEN(string) 145
8.4.7 RTRIM(string)和
LTRIM(string) 145
8.4.8 UPPER(string)和
LOWER(string) 145
8.4.9 REPLACE(string,string) 145
8.4.10 dbo.pTitleCase(source,
search,replace) 147
8.4.11 SQL Server 2012新增的
字符串函數 148
8.5 Soundex函數 148
8.5.1 使用 SOUNDEX()函數 149
8.5.2 使用DIFFERENCE()
Soundex 函數 151
8.6 數據類型的轉換函數 151
8.7 服務器環境信息 154
8.8 小結 155
第9章 用聯接、子查詢和CTE
閤並數據 156
9.1 使用聯接 157
9.1.1 內聯接 158
9.1.2 外聯接 162
9.1.3 自聯接 167
9.1.4 交叉聯接 168
9.1.5 特殊聯接 169
9.2 差集查詢 170
9.2.1 左差集查詢 170
9.2.2 全差集查詢 171
9.3 使用聯閤 171
9.3.1 UNION ALL查詢 171
9.3.2 交集聯閤 172
9.3.3 差值聯閤/EXCEPT 173
9.4 子查詢 173
9.4.1 簡單子查詢 174
9.4.2 把子查詢用作列錶 177
9.4.3 嵌套子查詢 177
9.4.4 把子查詢用作錶 177
9.4.5 相關子查詢 179
9.5 小結 182
第10章 聚閤、窗口化和排名數據 183
10.1 聚閤數據 183
10.1.1 基本聚閤 183
10.1.2 聚閤、平均和空值 185
10.2 結果集中的分組 185
10.2.1 簡單分組 186
10.2.2 分組集 187
10.2.3 篩選已分組的結果 188
10.3 窗口化和排名 189
10.3.1 窗口化 189
10.3.2 OVER()子句 189
10.3.3 在窗口內分區 190
10.4 排名函數 191
10.4.1 ROW_NUMBER()函數 191
10.4.2 RANK()函數和
DENSE_RANK()函數 193
10.4.3 NTILE()函數 195
10.4.4 聚閤函數 196
10.4.5 SQL Server 2012新增的
T-SQL特性 197
10.4.6 前一行和當前行 198
10.5 小結 199
第11章 通過視圖投影數據 200
11.1 使用視圖的理由 200
11.2 基本視圖 202
11.2.1 運用Query Designer
創建視圖 202
11.2.2 用DDL代碼創建視圖 203
11.2.3 執行視圖 204
11.2.4 更改並刪除視圖 205
11.3 從更廣泛的角度看視圖 206
11.3.1 列彆名 206
11.3.2 ORDER BY和視圖 206
11.3.3 視圖限製 207
11.3.4 嵌套視圖 207
11.3.5 通過視圖更新 209
11.3.6 視圖和性能 209
11.4 鎖定視圖 210
11.4.1 未經檢查的數據 210
11.4.2 保護數據 211
11.4.3 保護視圖 212
11.4.4 加密視圖的SELECT語句 213
11.4.5 應用程序元數據 213
11.5 運用同義詞 214
11.6 小結 214
第12章 在SQL Server中修改數據 215
12.1 插入數據 216
12.1.1 插入簡單的值行 216
12.1.2 從SELECT插入結果集 219
12.1.3 從存儲過程插入結果集 220
12.1.4 創建默認行 222
12.1.5 在插入數據時創建錶 222
12.2 更新數據 224
12.2.1 更新單個錶 224
12.2.2 執行全局搜索和替代 225
12.2.3 更新數據時引用多個錶 226
12.3 刪除數據 230
12.3.1 刪除時引用多個數據源 231
12.3.2 級聯刪除 232
12.3.3 物理刪除數據的其他選擇 232
12.4 閤並數據 233
12.5 返迴修改後的數據 237
12.5.1 從插入返迴數據 237
12.5.2 從更新返迴數據 237
12.5.3 從刪除返迴數據 238
12.5.4 從閤並返迴數據 238
12.5.5 把數據返迴到錶中 239
12.6 小結 239
第Ⅲ部分 高級T-SQL數據類型和查詢技術
第13章 操作層次結構 243
13.1 HierarchyID 243
13.1.1 選擇單個節點 245
13.1.2 搜索祖先節點 246
13.1.3 執行子樹搜索 246
13.1.4 插入新節點 247
13.2 HierarchyID方法 248
13.3 索引策略 250
13.4 層次結構數據的備選
操作方式 251
13.4.1 遞歸CTE 251
13.4.2 XML 252
13.5 小結 253
第14章 使用XML數據 254
14.1 XML數據類型 255
14.1.1 類型化XML和
非類型化XML 259
14.1.2 XML架構 260
14.1.3 XML列和變量 262
14.1.4 XML參數和返迴值 263
14.2 XML數據類型方法 265
14.2.1 XPath 265
14.2.2 value() 265
14.2.3 nodes()方法 266
14.2.4 exist() 266
14.2.5 query()和modify() 266
14.3 FOR XML 267
14.3.1 AUTO 267
14.3.2 RAW 270
14.3.3 EXPLICIT 271
14.3.4 PATH 272
14.4 XQuery與FLWOR操作 274
14.5 小結 275
第15章 分布式查詢的執行 276
15.1 分布式查詢概述 276
15.2 分布式查詢的開發 284
15.2.1 分布式查詢和SSMS 284
15.2.2 分布式視圖 284
15.2.3 使用分布式事務 287
15.3 性能事項 289
15.3.1 優化分布式查詢 289
15.3.2 分片和聯閤 290
15.4 小結 291
第Ⅳ部分 使用T-SQL編程
第16章 使用T-SQL編程 295
16.1 Transact-SQL基礎 295
16.1.1 T-SQL批處理 296
16.1.2 T-SQL格式化 297
16.2 操作變量 298
16.2.1 變量默認值和作用域 298
16.2.2 使用SET命令和
SELECT命令 299
16.2.3 增量變量 300
16.2.4 條件選擇 301
16.2.5 在SQL查詢中使用變量 301
16.2.6 多重賦值變量 302
16.3 過程流 303
16.3.1 使用條件T-SQL的
IF命令 303
16.3.2 使用WHILE循環 305
16.3.3 使用GOTO命令
移動到標簽 306
16.4 通過代碼分析SQL Server 306
16.4.1 動態管理對象 306
16.4.2 sp_help 307
16.4.3 係統函數 308
16.5 臨時錶和錶變量 308
16.5.1 本地臨時錶 308
16.5.2 全局臨時錶 309
16.5.3 錶變量 310
16.6 SQL Server 2012中關於
T-SQL的新增內容 311
16.6.1 調試增強 311
16.6.2 元數據發現 311
16.6.3 OFFSET和FETCH 312
16.7 錯誤處理 313
16.7.1 遺留錯誤處理 314
16.7.2 RAISERROR 315
16.7.3 TRY…CATCH 318
16.7.4 T-SQL緻命錯誤 323
16.8 批量操作 323
16.8.1 批量插入 324
16.8.2 BCP 326
16.9 小結 326
第17章 存儲過程的開發 327
17.1 管理存儲過程 328
17.1.1 創建、更改和刪除 328
17.1.2 查看存儲過程 329
17.1.3 加密存儲過程代碼 330
17.1.4 執行存儲過程 331
17.1.5 係統存儲過程 331
17.2 把數據傳遞到存儲過程 332
17.2.1 輸入參數 332
17.2.2 提供列錶和錶作為
存儲過程的輸入參數 334
17.3 從存儲過程中返迴數據 338
17.3.1 輸齣參數 338
17.3.2 RETURN命令的運用 339
17.3.3 結果集 340
17.3.4 返迴數據的路徑和範圍 342
17.4 小結 343
第18章 構建用戶定義的函數 344
18.1 標量函數 345
18.1.1 理解限製 345
18.1.2 創建標量函數 346
18.1.3 調用標量函數 347
18.2 內聯錶值函數 347
18.2.1 創建內聯錶值函數 348
18.2.2 調用內聯錶值函數 348
18.2.3 使用參數 349
18.2.4 將用戶定義函數
相互關聯 350
18.2.5 使用架構綁定創建函數 350
18.3 多語句錶值函數 351
18.3.1 創建多語句錶值函數 351
18.3.2 調用函數 352
18.4 用戶定義函數的最佳實踐 353
18.4.1 性能最大化 353
18.4.2 使用一緻的命名約定 353
18.5 小結 353
第Ⅴ部分 企業數據管理
第19章 配置SQL Server 357
19.1 設置選項 357
19.1.1 配置服務器 358
19.1.2 配置數據庫 361
19.1.3 配置連接 362
19.1.4 外圍應用配置器方麵 363
19.2 配置選項 363
19.2.1 顯示高級選項 363
19.2.2 啓動/停止配置屬性 365
19.2.3 內存配置屬性 368
19.2.4 處理器配置屬性 372
19.2.5 安全配置屬性 377
19.2.6 連接配置屬性 380
19.2.7 高級服務器配置屬性 385
19.2.8 配置數據庫自動選項 388
19.2.9 遊標配置屬性 390
19.2.10 SQL ANSI配置屬性 392
19.2.11 觸發器配置屬性 398
19.2.12 數據庫狀態配置屬性 398
19.2.13 恢復配置屬性 400
19.3 小結 403
第20章 基於策略的管理 404
20.1 定義策略 404
20.1.1 管理方麵 406
20.1.2 健康條件 407
20.1.3 創建策略 409
20.2 評估策略 413
20.3 小結 414
第21章 備份和恢復計劃 415
21.1 恢復概念 416
21.2 恢復模型 417
21.2.1 簡單恢復模型 417
21.2.2 完整恢復模型 418
21.2.3 批量日誌恢復模型 419
21.2.4 設置恢復模型 420
21.2.5 修改恢復模型 420
21.3 備份數據庫 421
21.3.1 備份目標 421
21.3.2 備份輪換 421
21.3.3 用Management Studio
執行備份 421
21.3.4 用代碼備份數據庫 423
21.3.5 用代碼驗證備份 426
21.4 使用事務日誌 426
21.4.1 事務日誌內 426
21.4.2 備份事務日誌 428
21.4.3 截斷日誌 429
21.4.4 事務日誌和簡單恢復
模型 429
21.5 恢復操作 429
21.5.1 檢測問題 430
21.5.2 恢復順序 430
21.5.3 用Management Studio
執行還原 431
21.5.4 還原個彆頁麵 433
21.5.5 通過T-SQL代碼還原 434
21.6 係統數據庫恢復 438
21.6.1 master數據庫 438
21.6.2 msdb係統數據庫 440
21.7 執行完全恢復 440
21.8 小結 441
第22章 維護數據庫 442
22.1 DBCC命令 442
22.1.1 數據庫完整性 444
22.1.2 數據庫文件大小 452
22.1.3 其他DBCC命令 456
22.2 管理數據庫維護 457
22.2.1 計劃數據庫維護 457
22.2.2 維護計劃 457
22.2.3 命令行維護 462
22.2.4 監控數據庫維護 462
22.3 小結 463
第23章 傳輸數據庫 464
23.1 Copy Database Wizard 465
23.2 使用SQL腳本 467
23.3 分離和附加 470
23.4 Import and Export Wizard 472
23.5 數據層應用程序(DAC) 474
23.6 小結 475
第24章 數據庫快照 477
24.1 數據庫快照的工作原理 478
24.1.1 數據庫快照的機製 478
24.1.2 第一次寫時復製 478
24.2 使用數據庫快照 479
24.2.1 創建數據庫快照 479
24.2.2 查詢數據庫快照 481
24.2.3 刪除數據庫快照 482
24.2.4 迴滾數據庫快照 482
24.3 小結 484
第25章 使用Service Broker進行
異步消息傳輸 48525.1 配置消息隊列 486
25.2 使用對話 488
25.2.1 將消息發送到隊列 488
25.2.2 接收消息 489
25.3 SQL Server 2012中Service
Broker的新增功能 491
25.3.1 消息多播 491
25.3.2 AlwaysOn支持 491
25.3.3 有害消息處理 492
25.3.4 消息排隊時間 492
25.4 監控Service Broker和
排除故障 492
25.5 小結 493
第26章 日誌傳送 494
26.1 可用性測試 495
26.2 溫備用可用性 495
26.3 定義日誌傳送 496
26.4 檢查日誌傳送配置 504
26.5 監視日誌傳送 505
26.6 修改或刪除日誌傳送 506
26.7 切換角色 508
26.8 小結 509
第27章 數據庫鏡像 510
27.1 數據庫鏡像概述 511
27.2 定義和配置數據庫鏡像 512
27.3 檢查數據庫鏡像配置 520
27.4 監控數據庫鏡像 522
27.4.1 使用Database Mirroring
Monitor監控 522
27.4.2 使用System Monitor監控 525
27.4.3 使用SQL Server Profiler
監控 525
27.5 暫停或刪除數據庫鏡像 526
27.6 角色切換 526
27.7 高可用性/AlwaysOn 528
27.7.1 要求和前提條件 528
27.7.2 配置AlwaysOn
Availability Groups 529
27.7.3 監控AlwaysOn
Availability Groups 536
27.8 小結 537
第28章 復製數據 538
28.1 在服務器之間移動數據 538
28.1.1 批量復製程序 539
28.1.2 SSIS 539
28.1.3 分發式事務 539
28.1.4 觸發器 539
28.1.5 Copy Database Wizard 539
28.1.6 備份和還原 539
28.1.7 日誌傳送 540
28.1.8 數據庫鏡像 540
28.2 復製的概念 540
28.2.1 復製的類型 540
28.2.2 復製代理 541
28.2.3 事務一緻性 542
28.3 配置復製 542
28.3.1 創建發布服務器和
分發服務器 542
28.3.2 使用遠程分發服務器 543
28.3.3 創建一個快照/事務發布 544
28.3.4 創建事務/快照發布的
推送訂閱 546
28.3.5 創建事務/快照發布的
請求訂閱 547
28.3.6 創建對等拓撲 548
28.3.7 創建一個閤並發布 548
28.3.8 Web同步 549
28.4 小結 550
第29章 群集 551
29.1 群集的功能 551
29.1.1 高可用性和可伸縮性 551
29.1.2 在綫的含義 552
29.1.3 群集的工作原理 552
29.2 配置群集 553
29.2.1 配置Windows Server
2008/2008R2的群集 553
29.2.2 把SQL Server 2012
安裝為群集實例 558
29.2.3 測試故障轉移 565
29.3 小結 566
第30章 用PowerShell配置和
管理SQL Server 567
30.1 使用PowerShell的原因 567
30.2 PowerShell基本知識 568
30.2.1 語言特性 568
30.2.2 創建腳本 573
30.3 SQL Server PowerShell擴展 577
30.3.1 導入模塊 577
30.3.2 SQL PSDrive——
SQLSERVER 577
30.3.3 SQL cmdlet 578
30.4 通過SMO與SQL Server
通信 580
30.4.1 SQL Server管理對象 580
30.4.2 ADO.NET 583
30.5 編寫SQL Server任務腳本 585
30.5.1 管理任務 585
30.5.2 基於數據的任務 588
30.6 小結 589
第31章 管理Windows Azure SQL
Database 中的數據 590
31.1 Azure SQL Database概述 590
31.2 管理Windows Azure SQL
Database 590
31.2.1 SQL Server Management
Studio 591
31.2.2 Windows Azure SQL
Database管理器 592
31.2.3 在SQL Database中創建
數據庫 592
31.3 高可用性和可伸縮性 593
31.3.1 高可用性 593
31.3.2 可伸縮性 594
31.4 把數據遷移到
SQL Database中 594
32.4.1 生成腳本嚮導 595
31.4.2 SQL Server Integration
Services 601
31.4.3 使用bcp實用工具 608
31.5 小結 610
第Ⅵ部分 保護SQL Server的安全
第32章 SQL Server中的身份
驗證類型 613
32.1 Windows身份驗證 615
32.2 SQL身份驗證 615
32.3 SQL和Windows身份
驗證之間的區彆 616
32.4 Kerberos和Windows
身份驗證委托 616
32.5 小結 617
第33章 授權安全對象 618
33.1 權限鏈 618
33.2 對象所有權 619
33.3 安全對象的權限 619
33.4 對象安全 620
33.4.1 用戶自定義數據庫角色 620
33.4.2 對象權限 620
33.4.3 用代碼授予對象權限 621
33.4.4 用代碼撤消和拒絕
對象權限 622
33.4.5 公共角色 623
33.4.6 用代碼管理角色 623
33.4.7 分層角色結構 624
33.4.8 對象安全和Management
Studio 624
33.5 一個示例安全模型 625
33.6 視圖和安全 625
33.7 小結 626
第34章 數據加密 627
34.1 數據加密簡介 627
34.1.1 密鑰的層次結構 628
34.1.2 用T-SQL加密 628
34.1.3 用對稱密鑰加密 630
34.1.4 使用非對稱密鑰 631
34.1.5 使用證書 632
34.2 小結 632
第35章 行級安全性 633
35.1 Security錶 633
35.2 分配權限 635
35.2.1 分配安全性 635
35.2.2 處理安全級彆的更新 638
35.3 檢查權限 640
35.3.1 安全檢查存儲過程 640
35.3.2 安全檢查函數 641
35.3.3 使用Windows登錄 642
35.3.4 安全檢查觸發器 644
35.4 小結 644
第Ⅶ部分 監視和審計
第36章 觸發器的創建 647
36.1 觸發器基礎 647
36.1.1 事務流 648
36.1.2 觸發器的創建 648
36.1.3 AFTER觸發器 649
36.1.4 INSTEAD OF觸發器 650
36.1.5 觸發器限製 651
36.1.6 禁用觸發器 651
36.1.7 列齣觸發器 652
36.1.8 觸發器和安全性 652
36.2 處理事務 652
36.2.1 確定已更新的列 653
36.2.2 inserted和deleted邏輯錶 654
36.2.3 開發支持多行的觸發器 655
36.3 多個觸發器之間的交互 656
36.3.1 觸發器的組織 657
36.3.2 嵌套觸發器 657
36.3.3 遞歸觸發器 658
36.3.4 INSTEAD OF觸發器和
AFTER觸發器一起使用 660
36.3.5 多個AFTER觸發器 660
36.4 事務聚閤處理 660
36.4.1 庫存事務觸發器 661
36.4.2 庫存觸發器 662
36.5 DDL觸發器 664
36.6 DDL觸發器的管理 664
36.6.1 創建和更改DDL觸發器 664
36.6.2 觸發器的作用域 665
36.6.3 DDL觸發器和安全性 666
36.6.4 啓用和禁用DDL觸發器 666
36.6.5 刪除DDL觸發器 667
36.7 DDL觸發器的開發 667
36.7.1 EventData()函數 667
36.7.2 避免數據庫對象的更改 668
36.8 小結 669
第37章 性能監視器和PAL 670
37.1 使用PerfMon 670
37.1.1 係統監視器 670
37.1.2 Data Collector Set 673
37.1.3 使用PowerShell訪問
性能計數器 674
37.2 小結 676
第38章 使用Profiler和SQL Trace 677
38.1 SQL Server Profiler的功能 677
38.2 運行Profiler 677
38.2.1 定義新的跟蹤 678
38.2.2 選擇事件和數據列 678
38.2.3 篩選事件 680
38.2.4 組織列 680
38.2.5 運行跟蹤 681
38.2.6 使用跟蹤文件 681
38.2.7 集成性能監視器數據 681
38.3 使用SQL Trace 682
38.4 小結 684
第39章 等待狀態 685
39.1 SQL Server OS 685
39.2 查看等待狀態統計信息 686
39.2.1 執行請求 686
39.2.2 等待狀態統計信息 686
39.2.3 等待請求 687
39.3 常見的紅旗等待類型 687
39.4 收集等待數據的其他方式 688
39.5 小結 688
第40章 Extended Events 689
40.1 Extended Events對象模型 689
40.1.1 包 689
40.1.2 事件 690
40.1.3 動作 690
40.1.4 目標 691
40.1.5 謂詞 691
40.1.6 映射 691
40.1.7 會話 692
40.1.8 通道 692
40.2 system_health會話 692
40.3 Extended Events Profiler 692
40.4 小結 694
第41章 數據更改的跟蹤和捕獲 695
41.1 配置Change Tracking 695
41.1.1 啓用數據庫 696
41.1.2 自動清理 696
41.1.3 啓用錶 697
41.1.4 內部錶 698
41.2 查詢Change Tracking 699
41.2.1 版本號 699
41.2.2 行變更 700
41.3 刪除Change Tracking 701
41.4 Change Data Capture 702
41.5 SQL Server 2012中的
新增功能 703
41.6 啓用CDC 703
41.6.1 啓用數據庫 703
41.6.2 啓用錶 704
41.7 使用Change Data Capture 705
41.7.1 檢查日誌序號 705
41.7.2 查詢變更錶 706
41.7.3 查詢淨更改 708
41.7.4 迭代變更錶 710
41.8 刪除Change Data Capture 710
41.9 小結 711
第42章 SQL Audit 712
42.1 SQL Audit技術概述 712
42.2 創建Audit對象 713
42.2.1 定義目標 714
42.2.2 使用T-SQL 714
42.2.3 啓用/禁用審計 715
42.3 Server Audit Specification 715
42.3.1 添加操作 716
42.3.2 用T-SQL創建 716
42.3.3 修改Server Audit
Specification 716
42.4 Database Audit Specification 716
42.5 查看審計綫索 717
42.6 小結 718
第43章 管理數據倉庫 719
43.1 使用管理數據倉庫 719
43.2 配置MDW 720
43.3 建立數據集閤 723
43.4 查看MDW報錶 724
43.4.1 磁盤使用情況匯總 724
43.4.2 服務器活動曆史報錶 725
43.4.3 查詢統計信息報錶 726
43.5 創建定製的數據收集器集閤 726
43.6 小結 728
第Ⅷ部分 性能調整和優化
第44章 解釋查詢執行計劃 731
44.1 查看查詢執行計劃 732
44.1.1 估計和實際查詢執行計劃 732
44.1.2 閱讀執行計劃 732
44.1.3 使用Showplan和
STATISTICS PROFILE 733
44.1.4 SQL Profiler的執行計劃 734
44.2 理解查詢執行計劃 735
44.3 小結 736
第45章 索引策略 737
45.1 索引的藝術 737
45.2 索引基礎 738
45.2.1 B-樹索引 738
45.2.2 聚集索引 738
45.2.3 非聚集索引 739
45.2.4 復閤索引 740
45.2.5 唯一索引和約束 740
45.2.6 頁麵分隔問題 740
45.2.7 索引選擇性 741
45.2.8 無序的堆 742
45.2.9 查詢操作 742
45.3 查詢路徑 743
45.3.1 查詢路徑1:提取
所有數據 745
45.3.2 查詢路徑2:聚集
索引查找 745
45.3.3 查詢路徑3:範圍
查找查詢 745
45.3.4 查詢路徑4:用非鍵
列篩選 747
45.3.5 查詢路徑5:書簽查找 748
45.3.6 查詢路徑6:覆蓋索引 749
45.3.7 查詢路徑7:用2個NC
索引來篩選 752
45.3.8 查詢路徑8:用有序的
復閤索引篩選 753
45.3.9 查詢路徑9:用無序的
復閤索引篩選 753
45.3.10 查詢路徑10:Non-
SARG-able錶達式 754
45.4 全麵的索引策略 755
45.4.1 標識重要查詢 755
45.4.2 選擇聚集索引 756
45.4.3 創建基索引 757
45.5 特殊索引 757
45.5.1 篩選索引 757
45.5.2 索引視圖 758
45.5.3 Columnstore索引 760
45.6 小結 760
第46章 最大限度地重用查詢計劃 762
46.1 查詢編譯 762
46.1.1 Query Optimizer 762
46.1.2 查看Plan Cache 763
46.1.3 查詢計劃的生存期 764
46.1.4 執行查詢計劃 764
46.2 查詢重編譯 764
46.3 小結 765
第47章 管理事務、鎖定和阻塞 766
47.1 ACID屬性 767
47.1.1 原子性 767
47.1.2 一緻性 767
47.1.3 隔離性 767
47.1.4 持久性 768
47.2 事務的編程 768
47.2.1 邏輯事務 768
47.2.2 Xact_State()函數 769
47.2.3 Xact_Abort 769
47.2.4 嵌套事務 770
47.2.5 隱式事務 770
47.2.6 保存點 771
47.3 默認的鎖定和阻塞行為 771
47.4 監控鎖定和阻塞 773
47.4.1 使用Management Studio
報錶查看阻塞 773
47.4.2 使用Activity Monitor
查看阻塞 774
47.4.3 使用Profiler 775
47.4.4 使用動態管理視圖查詢鎖 775
47.5 死鎖 776
47.5.1 創建死鎖 777
47.5.2 自動檢測死鎖 779
47.5.3 處理死鎖 779
47.5.4 最小化死鎖 780
47.6 理解SQL Server鎖定 781
47.6.1 鎖粒度 781
47.6.2 鎖模式 781
47.6.3 控製鎖定超時 783
47.6.4 鎖定持續時間 783
47.6.5 索引級的鎖定限製 783
47.7 事務隔離級彆 784
47.7.1 設置事務隔離級彆 785
47.7.2 級彆1——Read
Uncommitted和髒讀取 786
47.7.3 級彆2——Read
Committed 787
47.7.4 級彆3——Repeatable
Read 787
47.7.5 級彆4——Serializable 790
47.7.6 快照隔離 793
47.7.7 使用鎖定提示 795
47.8 應用程序鎖 796
47.9 應用程序鎖定設計 797
47.9.1 實現樂觀鎖定 797
47.9.2 丟失更新 797
47.10 事務日誌的體係結構 798
47.10.1 事務日誌序列 798
47.10.2 事務日誌恢復 800
47.11 事務性能策略 801
47.12 小結 802
第48章 數據壓縮 803
48.1 理解數據壓縮 803
48.1.1 數據壓縮的優缺點 804
48.1.2 行壓縮 805
48.1.3 頁麵壓縮 805
48.1.4 壓縮序列 806
48.2 應用數據壓縮 807
48.2.1 確定當前壓縮設置 807
48.2.2 估計數據壓縮 807
48.2.3 啓用數據壓縮 808
48.2.4 數據壓縮策略 809
48.3 小結 810
第49章 分區 811
49.1 分區策略 811
49.2 分區視圖 812
49.3 已分區錶和索引 817
49.3.1 創建文件組 818
49.3.2 創建分區函數 820
49.3.3 創建分區模式 820
49.3.4 創建分區錶 821
49.3.5 查詢分區錶 822
49.3.6 修改分區錶 822
49.3.7 切換錶 823
49.3.8 滾動分區 825
49.3.9 給已分區錶建立索引 826
49.3.10 刪除分區 826
49.4 小結 826
第50章 Resource Governor 827
50.1 研究Resource Governor的
基礎知識 827
50.1.1 理解資源池 827
50.1.2 工作負載組 830
51.1.3 分類器函數 832
50.2 Resource Governor的
性能監控 833
50.3 視圖和限製 834
50.4 小結 834
第Ⅸ部分 商 業 智 能
第51章 BI數據庫設計 837
51.1 數據倉庫 837
51.2 使用星型架構設計數據倉庫 838
51.3 用雪片型架構設計數據倉庫 839
51.4 在數據倉庫中確保一緻性 839
51.5 加載數據 840
51.5.1 加載維度 840
51.5.2 加載事實錶 842
51.5.3 修改維度中的數據 842
51.6 小結 843
第52章 在Integration Services中
建立、部署和管理ETL
工作流 844
52.1 SSIS環境概述 845
52.1.1 在SQL Server Data
Services中創建基本的
SSIS包 846
52.1.2 使用UI改進功能方便地
配置一個數據流任務中的
包元素 848
52.2 SSIS環境詳述 852
52.2.1 使用連接管理器 852
52.2.2 使用控製流元素 854
52.2.3 使用數據流組件 858
52.2.4 使用參數和變量 863
52.2.5 變量 864
52.2.6 使用SSIS錶達式語言 865
52.2.7 使用包的日誌記錄 866
52.3 部署、執行項目和包 866
52.3.1 使用包部署模型 866
52.3.2 從(舊)包模型轉換為
項目模型 867
52.3.3 使用項目部署模型 867
52.3.4 使用SSIS服務器執行
項目和包 868
52.4 小結 870
第53章 在Analysis Services中使用
MDX構建多維數據集 871
53.1 Analysis Services的快速啓動 871
53.2 Analysis Services體係結構 872
53.2.1 統一維度模型 872
53.2.2 服務器 872
53.2.3 客戶端 873
53.3 構建數據庫 873
53.3.1 SQL Server Data Tools 873
53.3.2 數據源 873
53.3.3 數據源視圖 874
53.3.4 創建多維數據集 877
53.4 維度 877
53.4.1 創建維度 877
53.4.2 常規維度之外的內容 880
53.4.3 維度的細化 880
53.5 多維數據集 881
53.5.1 維度的使用 883
53.5.2 Calculations選項卡 883
53.5.3 KPI 884
53.5.4 動作 884
53.5.5 分區 884
53.5.6 聚閤函數的設計 885
53.5.7 透視 886
53.6 數據存儲 887
53.7 多維數據集的處理 887
53.7.1 處理方法 888
53.7.2 其他考慮 888
53.7.3 空值處理 889
53.7.4 未知成員 889
53.7.5 錯誤配置 889
53.8 小結 889
第54章 配置和管理Analysis
Services 890
54.1 安裝Analysis Services 890
54.2 配置Analysis Services的
基本設置 893
54.3 高級SSAS部署 894
54.4 使用SQL Profiler評估
查詢性能 895
54.5 小結 896
第55章 使用Reporting Services
編寫報錶 897
55.1 報錶編寫環境 897
55.1.1 SQL Server Data Tools(SSDT)
中的Report Designer 898
55.1.2 Report Builder 898
55.1.3 Power View 898
55.2 報錶的基本組成 898
55.2.1 數據源 898
55.2.2 數據集 899
55.2.3 報錶定義語言(RDL)文件 899
55.3 用Report Wizard建立報錶 900
55.4 從頭編寫報錶 901
55.5 研究Report Designer 902
55.5.1 設計界麵 902
55.5.2 Solution Explorer和
Properties 902
55.5.3 Report Data和Toolbox
麵闆 903
55.5.4 文本框屬性窗口 904
55.6 使用Reporting Services
功能顯示數據 905
55.6.1 創建Matrix報錶 905
55.6.2 處理多維數據集 905
55.6.3 使用參數 907
55.6.4 使用RS Expressions 909
55.7 設計報錶布局 909
55.7.1 選擇報錶類型 909
55.7.2 分組和排序 910
55.7.3 使用圖錶工具 910
55.8 用Report Builder建立報錶 912
55.8.1 用Report Builder
創建報錶 912
55.8.2 使用Report Gallery 914
55.9 小結 915
第56章 配置和管理Reporting
Services 916
56.1 安裝Reporting Services 916
56.1.1 本機模式 916
56.1.2 SharePoint 集成模式 917
56.2 部署Reporting Services報錶 919
56.2.1 使用SSDT部署報錶 919
56.2.2 使用Report Manager
部署報錶——本機模式 920
56.2.3 在SharePoint中部署報錶 920
56.3 用Reporting Services
管理安全 922
56.3.1 在本機模式下管理角色 923
56.3.2 用角色管理訪問權限 924
56.3.3 管理訂閱 926
56.3.4 創建數據驅動的訂閱 927
56.3.5 集成模式下的
Data Alerts 927
56.4 災難恢復 927
56.4.1 備份目錄 928
56.4.2 備份對稱密鑰 928
56.4.3 還原Reporting Services 929
56.5 小結 929
第57章 使用Analysis Services
挖掘數據 930
57.1 數據挖掘過程 930
57.2 使用Analysis Services建模 931
57.2.1 數據挖掘嚮導 931
57.2.2 挖掘模型 932
57.2.3 模型評估 933
57.3 算法 936
57.3.1 決策樹 936
57.3.2 綫性迴歸 937
57.3.3 聚類分析 937
57.3.4 序列聚類分析 938
57.3.5 神經網絡 938
57.3.6 邏輯迴歸 938
57.3.7 Naive Bayes 939
57.3.8 關聯規則 940
57.3.9 時間序列 940
57.4 多維數據集集成 941
57.5 小結 941
第58章 創建和部署BI語義模型 942
58.1 BI語義模型的含義 942
58.2 開發環境 943
58.3 使用PowerPivot創建
BI語義模型 945
58.4 用PowerPivot擴展BI
語義模型 948
58.4.1 在PowerPivot中創建KPI 948
58.4.2 在PowerPivot中創建
層次結構 950
58.4.3 在PowerPivot中
創建透視圖 953
58.5 把BI語義模型部署到
SharePoint上 955
58.6 在SharePoint 2010中
管理PowerPivot工作簿
數據的自動刷新 955
58.7 使用SQL Server Data Tools
創建BI語義模型 956
58.8 用SQL Server Data Tools
擴展BI語義模型 957
58.9 把BI語義模型部署到
Analysis Services實例上 959
58.9.1 部署選項 959
58.9.2 部署服務器選項 960
58.9.3 DirectQuery選項 960
58.10 小結 960
第59章 創建和部署Power View
報錶 961
59.1 Power View的要求 961
59.1.1 服務器端的要求 961
59.1.2 客戶端的要求 961
59.2 用Power View創建和
部署報錶 962
59.2.1 創建連接文件庫 963
59.2.2 創建Report Data Source
文件 963
59.2.3 創建BI Semantic Model
Connection文件 965
59.2.4 用Power View創建報錶 966
59.3 部署Power View報錶 973
59.4 小結 974
· · · · · · (
收起)