圖書簡介
如果您是一位資料庫管理員或開發者,那么SQL
Server2012寶典(第4版)將是您全面了解SQLServer2012的
一站式資源。本書深入探討核心技術、最佳實踐和精妙方
案,列舉豐富的實例和示例代碼,並完整介紹AlwaysOn連
接、新索引、PowerView、主數據服務、數據質量服務和
PowerPivotforSQLServer2012等新功能。
●深入探討SQLServer2012的所有新功能
●理解高級T-SQL數據類型和查詢技術
●確保任務關鍵型應用程式的高可用性
●開始使用SQLAzure進行雲計算
●熟悉新的安全和兼容設定
●通過BI、數據倉儲和EnterpriseInformationManagement
解決方案工具使用數據
●快速了解BI工具集的最新改進
目錄
第Ⅰ部分入門
第1章SQLServer世界 3
1.1SQLServer發展簡史 3
1.2資料庫市場中的SQLServer 4
1.2.1SQLServer的競爭對手 4
1.2.2SQL社區的強大之處 4
1.3SQLServer的組件 5
1.3.1資料庫引擎 5
1.3.2服務 5
1.3.3商業智慧型 6
1.3.4工具和附加組件 7
1.3.5在線上資源 9
1.4SQLServer2012的版本 9
1.5SQLServer2012的顯著增強 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章安裝SQLServer 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.1SQLServer2012安裝中心 32
3.3.2通過安裝中心安裝
SQLServer2012 33
3.3.3通過命令行安裝
SQLServer2012 41
3.3.4通過PowerShell安裝
SQLServer2012 43
3.3.5完成安裝後的任務 46
3.4小結 49
第4章客戶端連線 50
4.1啟用伺服器連線 50
4.1.1伺服器配置管理器 51
4.1.2SQL本地客戶端連線(SNAC) 52
4.2SQLServer本地客戶端特性 52
4.2.1對LocalDB的本地
客戶端支持 53
4.2.2元數據發現 53
4.2.3高可用性/災難恢復支持 53
4.2.4改進的日期/時間支持 53
4.2.5訪問擴展事件日誌中的
診斷信息 54
4.2.6ODBC特性 54
4.2.7多活動結果集(MARS) 54
4.2.8XML數據類型 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章SQLServer管理和開發工具 57
5.1組織界面 58
5.1.1視窗放置 59
5.1.2上下文選單 61
5.2RegisteredServers 61
5.2.1管理伺服器 61
5.2.2伺服器組 62
5.3ObjectExplorer 63
5.3.1導航樹 63
5.3.2篩選ObjectExplorer 65
5.3.3ObjectExplorerDetails頁面 65
5.3.4表設計器 65
5.3.5創建資料庫關係圖 66
5.3.6QueryDesigner 67
5.3.7ObjectExplorer報表 68
5.4使用QueryEditor 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使用SolutionExplorer 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.2From子句數據源 83
6.2.1可能的數據源 83
6.2.2表別名 84
6.2.3表名稱 85
6.2.4完全限定的名稱 85
6.3WHERE條件 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.5ORDERBY和排序規則 97
6.6SELECTDISTINCT 99
6.7TOP()謂詞 100
6.7.1WITHTIES選項 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.4Boyce-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.3CASE表達式 130
8.2.4SQLServer2012新增的
邏輯函式 132
8.2.5使用空值 133
8.3標量函式 138
8.3.1用戶定義函式 138
8.3.2日期和時間函式 139
8.3.3SQLServer2012新增的函式 142
8.4字元串函式 143
8.4.1SUBSTRING(string,
startingposition,length) 144
8.4.2STUFF(string,insertion
position,deletecount,
stringinserted) 144
8.4.3CHARINDEX(searchstring,
string,startingposition) 144
8.4.4PATINDEX(pattern,string) 144
8.4.5RIGHT(string,count)和
LEFT(string,count) 145
8.4.6LEN(string) 145
8.4.7RTRIM(string)和
LTRIM(string) 145
8.4.8UPPER(string)和
LOWER(string) 145
8.4.9REPLACE(string,string) 145
8.4.10dbo.pTitleCase(source,
search,replace) 147
8.4.11SQLServer2012新增的
字元串函式 148
8.5Soundex函式 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.1UNIONALL查詢 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.2OVER()子句 189
10.3.3在視窗內分區 190
10.4排名函式 191
10.4.1ROW_NUMBER()函式 191
10.4.2RANK()函式和
DENSE_RANK()函式 193
10.4.3NTILE()函式 195
10.4.4聚合函式 196
10.4.5SQLServer2012新增的
T-SQL特性 197
10.4.6前一行和當前行 198
10.5小結 199
第11章通過視圖投影數據 200
11.1使用視圖的理由 200
11.2基本視圖 202
11.2.1運用QueryDesigner
創建視圖 202
11.2.2用DDL代碼創建視圖 203
11.2.3執行視圖 204
11.2.4更改並刪除視圖 205
11.3從更廣泛的角度看視圖 206
11.3.1列別名 206
11.3.2ORDERBY和視圖 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章在SQLServer中修改數據 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.1HierarchyID 243
13.1.1選擇單個節點 245
13.1.2搜尋祖先節點 246
13.1.3執行子樹搜尋 246
13.1.4插入新節點 247
13.2HierarchyID方法 248
13.3索引策略 250
13.4層次結構數據的備選
操作方式 251
13.4.1遞歸CTE 251
13.4.2XML 252
13.5小結 253
第14章使用XML數據 254
14.1XML數據類型 255
14.1.1類型化XML和
非類型化XML 259
14.1.2XML架構 260
14.1.3XML列和變數 262
14.1.4XML參數和返回值 263
14.2XML數據類型方法 265
14.2.1XPath 265
14.2.2value() 265
14.2.3nodes()方法 266
14.2.4exist() 266
14.2.5query()和modify() 266
14.3FORXML 267
14.3.1AUTO 267
14.3.2RAW 270
14.3.3EXPLICIT 271
14.3.4PATH 272
14.4XQuery與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.1Transact-SQL基礎 295
16.1.1T-SQL批處理 296
16.1.2T-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通過代碼分析SQLServer 306
16.4.1動態管理對象 306
16.4.2sp_help 307
16.4.3系統函式 308
16.5臨時表和表變數 308
16.5.1本地臨時表 308
16.5.2全局臨時表 309
16.5.3表變數 310
16.6SQLServer2012中關於
T-SQL的新增內容 311
16.6.1調試增強 311
16.6.2元數據發現 311
16.6.3OFFSET和FETCH 312
16.7錯誤處理 313
16.7.1遺留錯誤處理 314
16.7.2RAISERROR 315
16.7.3TRY…CATCH 318
16.7.4T-SQL致命錯誤 323
16.8批量操作 323
16.8.1批量插入 324
16.8.2BCP 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.2RETURN命令的運用 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章配置SQLServer 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.10SQLANSI配置屬性 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用ManagementStudio
執行備份 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用ManagementStudio
執行還原 431
21.5.4還原個別頁面 433
21.5.5通過T-SQL代碼還原 434
21.6系統資料庫恢復 438
21.6.1master資料庫 438
21.6.2msdb系統資料庫 440
21.7執行完全恢復 440
21.8小結 441
第22章維護資料庫 442
22.1DBCC命令 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.1CopyDatabaseWizard 465
23.2使用SQL腳本 467
23.3分離和附加 470
23.4ImportandExportWizard 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章使用ServiceBroker進行
異步訊息傳輸 485
25.1配置訊息佇列 486
25.2使用對話 488
25.2.1將訊息傳送到佇列 488
25.2.2接收訊息 489
25.3SQLServer2012中Service
Broker的新增功能 491
25.3.1訊息多播 491
25.3.2AlwaysOn支持 491
25.3.3有害訊息處理 492
25.3.4訊息排隊時間 492
25.4監控ServiceBroker和
排除故障 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使用DatabaseMirroring
Monitor監控 522
27.4.2使用SystemMonitor監控 525
27.4.3使用SQLServerProfiler
監控 525
27.5暫停或刪除資料庫鏡像 526
27.6角色切換 526
27.7高可用性/AlwaysOn 528
27.7.1要求和前提條件 528
27.7.2配置AlwaysOn
AvailabilityGroups 529
27.7.3監控AlwaysOn
AvailabilityGroups 536
27.8小結 537
第28章複製數據 538
28.1在伺服器之間移動數據 538
28.1.1批量複製程式 539
28.1.2SSIS 539
28.1.3分髮式事務 539
28.1.4觸發器 539
28.1.5CopyDatabaseWizard 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.8Web同步 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配置WindowsServer
2008/2008R2的群集 553
29.2.2把SQLServer2012
安裝為群集實例 558
29.2.3測試故障轉移 565
29.3小結 566
第30章用PowerShell配置和
管理SQLServer 567
30.1使用PowerShell的原因 567
30.2PowerShell基本知識 568
30.2.1語言特性 568
30.2.2創建腳本 573
30.3SQLServerPowerShell擴展 577
30.3.1導入模組 577
30.3.2SQLPSDrive——
SQLSERVER 577
30.3.3SQLcmdlet 578
30.4通過SMO與SQLServer
通信 580
30.4.1SQLServer管理對象 580
30.4.2ADO.NET 583
30.5編寫SQLServer任務腳本 585
30.5.1管理任務 585
30.5.2基於數據的任務 588
30.6小結 589
第31章管理WindowsAzureSQL
Database中的數據 590
31.1AzureSQLDatabase概述 590
31.2管理WindowsAzureSQL
Database 590
31.2.1SQLServerManagement
Studio 591
31.2.2WindowsAzureSQL
Database管理器 592
31.2.3在SQLDatabase中創建
資料庫 592
31.3高可用性和可伸縮性 593
31.3.1高可用性 593
31.3.2可伸縮性 594
31.4把數據遷移到
SQLDatabase中 594
32.4.1生成腳本嚮導 595
31.4.2SQLServerIntegration
Services 601
31.4.3使用bcp實用工具 608
31.5小結 610
第Ⅵ部分保護SQLServer的安全
第32章SQLServer中的身份
驗證類型 613
32.1Windows身份驗證 615
32.2SQL身份驗證 615
32.3SQL和Windows身份
驗證之間的區別 616
32.4Kerberos和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.1Security表 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.3AFTER觸發器 649
36.1.4INSTEADOF觸發器 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.2inserted和deleted邏輯表 654
36.2.3開發支持多行的觸發器 655
36.3多個觸發器之間的互動 656
36.3.1觸發器的組織 657
36.3.2嵌套觸發器 657
36.3.3遞歸觸發器 658
36.3.4INSTEADOF觸發器和
AFTER觸發器一起使用 660
36.3.5多個AFTER觸發器 660
36.4事務聚合處理 660
36.4.1庫存事務觸發器 661
36.4.2庫存觸發器 662
36.5DDL觸發器 664
36.6DDL觸發器的管理 664
36.6.1創建和更改DDL觸發器 664
36.6.2觸發器的作用域 665
36.6.3DDL觸發器和安全性 666
36.6.4啟用和禁用DDL觸發器 666
36.6.5刪除DDL觸發器 667
36.7DDL觸發器的開發 667
36.7.1EventData()函式 667
36.7.2避免資料庫對象的更改 668
36.8小結 669
第37章性能監視器和PAL 670
37.1使用PerfMon 670
37.1.1系統監視器 670
37.1.2DataCollectorSet 673
37.1.3使用PowerShell訪問
性能計數器 674
37.2小結 676
第38章使用Profiler和SQLTrace 677
38.1SQLServerProfiler的功能 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使用SQLTrace 682
38.4小結 684
第39章等待狀態 685
39.1SQLServerOS 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章ExtendedEvents 689
40.1ExtendedEvents對象模型 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.2system_health會話 692
40.3ExtendedEventsProfiler 692
40.4小結 694
第41章數據更改的跟蹤和捕獲 695
41.1配置ChangeTracking 695
41.1.1啟用資料庫 696
41.1.2自動清理 696
41.1.3啟用表 697
41.1.4內部表 698
41.2查詢ChangeTracking 699
41.2.1版本號 699
41.2.2行變更 700
41.3刪除ChangeTracking 701
41.4ChangeDataCapture 702
41.5SQLServer2012中的
新增功能 703
41.6啟用CDC 703
41.6.1啟用資料庫 703
41.6.2啟用表 704
41.7使用ChangeDataCapture 705
41.7.1檢查日誌序號 705
41.7.2查詢變更表 706
41.7.3查詢淨更改 708
41.7.4疊代變更表 710
41.8刪除ChangeDataCapture 710
41.9小結 711
第42章SQLAudit 712
42.1SQLAudit技術概述 712
42.2創建Audit對象 713
42.2.1定義目標 714
42.2.2使用T-SQL 714
42.2.3啟用/禁用審計 715
42.3ServerAuditSpecification 715
42.3.1添加操作 716
42.3.2用T-SQL創建 716
42.3.3修改ServerAudit
Specification 716
42.4DatabaseAuditSpecification 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和
STATISTICSPROFILE 733
44.1.4SQLProfiler的執行計畫 734
44.2理解查詢執行計畫 735
44.3小結 736
第45章索引策略 737
45.1索引的藝術 737
45.2索引基礎 738
45.2.1B-樹索引 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.3Columnstore索引 760
45.6小結 760
第46章最大限度地重用查詢計畫 762
46.1查詢編譯 762
46.1.1QueryOptimizer 762
46.1.2查看PlanCache 763
46.1.3查詢計畫的生存期 764
46.1.4執行查詢計畫 764
46.2查詢重編譯 764
46.3小結 765
第47章管理事務、鎖定和阻塞 766
47.1ACID屬性 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.2Xact_State()函式 769
47.2.3Xact_Abort 769
47.2.4嵌套事務 770
47.2.5隱式事務 770
47.2.6保存點 771
47.3默認的鎖定和阻塞行為 771
47.4監控鎖定和阻塞 773
47.4.1使用ManagementStudio
報表查看阻塞 773
47.4.2使用ActivityMonitor
查看阻塞 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理解SQLServer鎖定 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章ResourceGovernor 827
50.1研究ResourceGovernor的
基礎知識 827
50.1.1理解資源池 827
50.1.2工作負載組 830
51.1.3分類器函式 832
50.2ResourceGovernor的
性能監控 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章在IntegrationServices中
建立、部署和管理ETL
工作流 844
52.1SSIS環境概述 845
52.1.1在SQLServerData
Services中創建基本的
SSIS包 846
52.1.2使用UI改進功能方便地
配置一個數據流任務中的
包元素 848
52.2SSIS環境詳述 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章在AnalysisServices中使用
MDX構建多維數據集 871
53.1AnalysisServices的快速啟動 871
53.2AnalysisServices體系結構 872
53.2.1統一維度模型 872
53.2.2伺服器 872
53.2.3客戶端 873
53.3構建資料庫 873
53.3.1SQLServerDataTools 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.2Calculations選項卡 883
53.5.3KPI 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安裝AnalysisServices 890
54.2配置AnalysisServices的
基本設定 893
54.3高級SSAS部署 894
54.4使用SQLProfiler評估
查詢性能 895
54.5小結 896
第55章使用ReportingServices
編寫報表 897
55.1報表編寫環境 897
55.1.1SQLServerDataTools(SSDT)
中的ReportDesigner 898
55.1.2ReportBuilder 898
55.1.3PowerView 898
55.2報表的基本組成 898
55.2.1數據源 898
55.2.2數據集 899
55.2.3報表定義語言(RDL)檔案 899
55.3用ReportWizard建立報表 900
55.4從頭編寫報表 901
55.5研究ReportDesigner 902
55.5.1設計界面 902
55.5.2SolutionExplorer和
Properties 902
55.5.3ReportData和Toolbox
面板 903
55.5.4文本框屬性視窗 904
55.6使用ReportingServices
功能顯示數據 905
55.6.1創建Matrix報表 905
55.6.2處理多維數據集 905
55.6.3使用參數 907
55.6.4使用RSExpressions 909
55.7設計報表布局 909
55.7.1選擇報表類型 909
55.7.2分組和排序 910
55.7.3使用圖表工具 910
55.8用ReportBuilder建立報表 912
55.8.1用ReportBuilder
創建報表 912
55.8.2使用ReportGallery 914
55.9小結 915
第56章配置和管理Reporting
Services 916
56.1安裝ReportingServices 916
56.1.1本機模式 916
56.1.2SharePoint集成模式 917
56.2部署ReportingServices報表 919
56.2.1使用SSDT部署報表 919
56.2.2使用ReportManager
部署報表——本機模式 920
56.2.3在SharePoint中部署報表 920
56.3用ReportingServices
管理安全 922
56.3.1在本機模式下管理角色 923
56.3.2用角色管理訪問許可權 924
56.3.3管理訂閱 926
56.3.4創建數據驅動的訂閱 927
56.3.5集成模式下的
DataAlerts 927
56.4災難恢復 927
56.4.1備份目錄 928
56.4.2備份對稱密鑰 928
56.4.3還原ReportingServices 929
56.5小結 929
第57章使用AnalysisServices
挖掘數據 930
57.1數據挖掘過程 930
57.2使用AnalysisServices建模 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.7NaiveBayes 939
57.3.8關聯規則 940
57.3.9時間序列 940
57.4多維數據集集成 941
57.5小結 941
第58章創建和部署BI語義模型 942
58.1BI語義模型的含義 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在SharePoint2010中
管理PowerPivot工作簿
數據的自動刷新 955
58.7使用SQLServerDataTools
創建BI語義模型 956
58.8用SQLServerDataTools
擴展BI語義模型 957
58.9把BI語義模型部署到
AnalysisServices實例上 959
58.9.1部署選項 959
58.9.2部署伺服器選項 960
58.9.3DirectQuery選項 960
58.10小結 960
第59章創建和部署PowerView
報表 961
59.1PowerView的要求 961
59.1.1伺服器端的要求 961
59.1.2客戶端的要求 961
59.1.2客戶端的要求 961
59.2用PowerView創建和
部署報表 962
59.2.1創建連線檔案庫 963
59.2.2創建ReportDataSource
檔案 963
59.2.3創建BISemanticModel
Connection檔案 965
59.2.4用PowerView創建報表 966
59.3部署PowerView報表 973
59.4小結 974