內容簡介
本書全面介紹SQLServer2005的管理和開發知識,包括SQLServer2005的新增功能、常用工具、開發基礎(包括T-SQL、聯接、創建和修改表、約束、視圖、腳本和批處理、存儲過程、用戶自定義函式、觸發器及游標等內容),討論範式化設計和與設計相關的基本問題,探討如何將SQLServer2005與XML結合起來,並就XML技術、本機XMLWeb查詢和公共語言運行時進行了探討,從而對利用多種技術進行高級查詢進行深入介紹。本書還詳細討論了綜合服務和VisualStudio等內容。最後針對大家感興趣的全文檢索、分散式查詢、服務分割器、報表服務和分析服務進行深入探討,詳細論述性能最佳化和管理,並以典型示例結束全書內容。
本書系統性強,知識點多,系統地介紹了SQLServer2005的新功能。國中級用戶可以將本書作為學習SQLServer2005的教材,資料庫設計高級開發人員也可以使用本書學習和研究資料庫開發知識。
目錄
第1章SQLServer2005概述 1
1.1SQLServer2005版本簡介 1
1.1.1版本說明 2
1.1.2硬體和OS要求 3
1.1.32005版本新特性 4
1.2資料庫系統開發模型 10
1.2.1單層結構(主機系統) 10
1.2.22-層結構(客戶/伺服器結構) 10
1.2.33-層結構 11
1.2.4n-層結構 11
1.3數據存取模型 12
1.4安裝 13
1.5SQLServer2005的組件 15
1.5.1資料庫對象 17
1.5.2SQLServer的數據類型 30
1.5.3SQLServer的對象標識符 33
1.6小結 34
第2章SQLServer2005實用工具 35
2.1SQLServer管理工具 35
2.1.1SQLServerManagementStudio 35
2.1.2複製 36
2.1.3綜合服務 36
2.1.4MSDTC管理控制台 37
2.1.5SQLServerProfiler 37
2.1.6查詢分析器 38
2.1.7OSQL 38
2.1.8sqlmaint.exe 38
2.2配置工具(ConfigurationTools) 39
2.2.1NotificationServicesCommandPrompt 39
2.2.2ReprotingServicesConfiguration 40
2.2.3SQLServerConfigurationManager 40
2.2.4SQLServerErrorandUsageReporting 47
2.2.5SQLServerSurfaceAreaConfiguration 49
2.3性能工具(PerformanceTools) 49
2.3.1資料庫引擎最佳化顧問 50
2.3.2SQLServerProfiler 51
2.4文檔和指南(Documentation
andTutorials) 52
2.4.1在線上叢書 52
2.4.2示例 53
2.4.3指南 53
2.5SQLServer2005UpgradeAdvisor 54
2.6開發工具 54
2.7小結 54
第3章SQLServer2005資料庫開
發基礎 55
3.1T-SQL基礎語句 55
3.1.1最基本的SELECT語句 55
3.1.2INSERT語句 65
3.1.3用UPDATE語句更新取得的數據 66
3.1.4DELETE語句 67
3.2聯接表 68
3.2.1聯接 68
3.2.2內部聯接 70
3.2.3外部聯接 72
3.2.4完全聯接 76
3.2.5交叉聯接 77
3.2.6探討聯接的替代語法 77
3.2.7聯合 79
3.3創建和修改表 81
3.3.1SQLServer的對象名 81
3.3.2CREATE語句 83
3.3.3ALTER語句 86
3.3.4DROP語句 89
3.4約束 89
3.4.1約束類型 90
3.4.2約束名 91
3.4.3鍵約束 91
3.4.4CHECK約束 97
3.4.5默認約束 98
3.4.6禁用約束 100
3.4.7規則和默認值 101
3.4.8維護數據完整性的觸發器 104
3.4.9比較 104
3.5視圖 105
3.5.1簡單視圖 106
3.5.2利用T-SQL編輯視圖 108
3.5.3刪除視圖 108
3.5.4審核 108
3.5.5加密視圖 109
3.5.6架構綁定 110
3.5.7使用VIEW_METADATA 110
3.5.8索引視圖 110
3.6腳本和批處理 112
3.6.1編寫腳本的基礎 112
3.6.2批處理 117
3.6.3OSQL 118
3.6.4動態SQL 119
3.7存儲過程 120
3.7.1創建存儲過程 120
3.7.2利用ALTER改變存儲過程 121
3.7.3刪除存儲過程 122
3.7.4參數化 122
3.7.5流控制語句 123
3.7.6存儲過程返回值 127
3.7.7異常處理 128
3.7.8過程的用途 134
3.7.9擴展的存儲過程(XPs) 136
3.7.10系統存儲過程 137
3.7.11遞歸 138
3.8用戶自定義函式 141
3.8.1返回標量值的UDF 142
3.8.2返回表的UDF 145
3.8.3創建“系統”函式 149
3.9觸發器 151
3.9.1觸發器定義 152
3.9.2使用觸發器維護引用完整性規則 155
3.9.3使用觸發器維護數據完整性規則 156
3.9.4觸發器的其他常見用途 156
3.9.5觸發器的其他問題 157
3.9.6INSTEADOF觸發器 160
3.10SQL游標 162
3.10.1游標的定義 162
3.10.2游標範圍 163
3.10.3游標類型和擴展聲明語法 165
3.10.4用FETCH語句操縱游標 172
3.10.5在游標中改變數據 173
3.11資料庫快照 173
3.11.1稀疏檔案 173
3.11.2工作方式 174
3.11.3創建資料庫快照 176
3.11.4典型用法與限制 177
3.11.5恢復和刪除資料庫快照 180
3.12小結 182
第4章範式化和其他基本設計問題 185
4.1表和實體 185
4.2實現“範式化” 186
4.2.1準備工作 187
4.2.2第一範式 188
4.2.3第二範式 190
4.2.4第三範式 191
4.2.5其他範式 192
4.3關係 193
4.3.1一對一 193
4.3.2一對一或一對多 195
4.3.3多對多 195
4.4關係圖 197
4.5調整資料庫的範式化 204
4.5.1保持簡化 205
4.5.2選擇數據類型 205
4.5.3有關存儲的錯誤 205
4.5.4良構資料庫 206
4.6更多的關係圖和關係 207
4.6.1一組關係類型 207
4.6.2實體盒 207
4.6.3關係線 208
4.6.4終止符 208
4.7數學建模 209
4.7.1邏輯模型的目標 209
4.7.2數學建模的組成 210
4.8處理基於檔案的信息 211
4.9子類 213
4.9.1子類的類型 215
4.9.2實現子類 215
4.9.3子類的物理實現 217
4.9.4子類與擴展性 217
4.10資料庫重用 218
4.10.1候選的重用資料庫 218
4.10.2分解 219
4.10.3重用的代價 219
4.11通過分區實現擴展性 220
4.12小結 221
第5章SQLServer2005的開發模式 222
5.1開發人員信息中心 222
5.1.1應用程式設計概念 223
5.1.2資料庫設計概念 234
5.1.3語言 242
5.1.4數據訪問編程 242
5.1.5管理編程 242
5.1.6工具 245
5.2管理員信息中心 246
5.2.1概念 246
5.2.2使用資料庫引擎 252
5.3結構設計師信息中心 255
5.4工作者信息中心 256
5.5設計與部署 256
5.5.1開發資料庫計畫 256
5.5.2在線上事務處理和決策支持 258
5.5.3規範化 259
5.5.4數據完整性 260
5.5.5查看擴展屬性 261
5.6小結 263
第6章SQLServer2005下的XML
開發基礎 264
6.1XML基礎 265
6.1.1XML文檔的組成 266
6.1.2良構XML 271
6.1.3確定元素和屬性 272
6.2命名空間 272
6.3DTD和架構 274
6.3.1DTD 274
6.3.2XML架構集合 275
6.3.3DTD/架構和性能總結 279
6.4轉換——XSLT 280
6.5FORXML子句 282
6.5.1RAW 283
6.5.2AUTO 288
6.5.3EXPLICIT 289
6.5.4OPENXML 307
6.5.5XML語法規則 316
6.5.6元素的語法 318
6.5.7注釋的語法 318
6.5.8CDATA的語法 318
6.5.9namespaces的語法 319
6.5.10entity的語法 319
6.6小結 320
第7章複製 322
7.1bcp 322
7.1.1bcp語法 323
7.1.2bcp導出 326
7.1.3格式化檔案 326
7.1.4bcp導入 329
7.1.5BULKINSERT 332
7.1.6OPENROWSET 333
7.1.7XML大容量載入 335
7.1.8最佳化大容量導入的方法 340
7.2支持分散式數據 341
7.3架構複製時的考慮 341
7.3.1獨立性 342
7.3.2延遲性 342
7.3.3數據一致性 342
7.3.4架構一致性 342
7.3.5其他考慮 343
7.4發布比喻 343
7.4.1訂閱刊物 345
7.4.2訂閱伺服器類型 346
7.4.3過濾數據 346
7.5複製類型 346
7.5.1快照複製 347
7.5.2合併複製 349
7.5.3事務複製 353
7.5.4立即更新的訂閱伺服器 355
7.5.5混合複製類型 356
7.6複製模型假設 356
7.6.1標準模型 357
7.6.2混合模型 358
7.6.3附加說明 359
7.7實現示例 359
7.7.1承包人供應公司 359
7.7.2清除服務 360
7.8計畫複製 361
7.8.1數據考慮 361
7.8.2複製類型 362
7.8.3複製嚮導 362
7.9啟用發布和分發 362
7.9.1啟動嚮導 363
7.9.2默認配置 364
7.9.3禁用發布 365
7.9.4T-SQL過程 366
7.10事務/快照發布刊物 366
7.10.1創建和管理髮布嚮導 366
7.10.2配置之後 368
7.10.3T-SQL過程 371
7.11合併發布刊物 371
7.12異類資料庫複製 371
7.12.1從Oracle發布數據 372
7.12.2將數據發布到非SQLServer訂閱
伺服器上 379
7.13管理複製 380
7.13.1複製腳本 380
7.13.2支持各種複製 380
7.13.3發布到Internet上 381
7.13.4複製和架構變化 381
7.13.5複製監視器 383
7.13.6後續 384
7.14企業範圍的自動化管理 384
7.14.1創建多伺服器環境 385
7.14.2管理作業 385
7.14.3輪詢伺服器 386
7.14.4管理事件 387
7.15高可用性解決方案 388
7.16小結 390
第8章SQLServer2005的高級查詢 391
8.1在SQLServer2005中使用XML 391
8.1.1xml數據類型表示形式 391
8.1.2xml數據類型 392
8.1.3xml數據類型列的索引 394
8.1.4管理伺服器上的XML架構集 395
8.1.5使用FORXML和OPENXML發布
和處理XML數據 395
8.1.6客戶端XML功能 397
8.2使用本機XMLWeb服務 399
8.2.1本機XMLWeb服務的工作原理 399
8.2.2啟用本機XMLWeb服務 400
8.2.3本機XMLWeb服務的安全性
方法 401
8.2.4設定伺服器以偵聽本機XMLWeb
服務請求 401
8.2.5使用WSDL 401
8.2.6SOAP技術 401
8.3公共語言運行時 412
8.3.1開始使用CLR 413
8.3.2.NET框架中的套用 415
8.4高級查詢 418
8.4.1建立嵌套子查詢 419
8.4.2關聯子查詢 423
8.4.3衍生表 427
8.4.4EXISTS操作符 429
8.4.5混合數據類型:CAST和
CONVERT 432
8.4.6性能考慮 435
8.5小結 436
第9章綜合服務 437
9.1體系結構 437
9.2綜合服務工具和實用工具 439
9.2.1綜合服務與Studio環境 439
9.2.2SSIS設計器及概念 440
9.2.3SSIS嚮導 453
9.2.4執行包實用工具 456
9.3SSIS設計 456
9.3.1生成解決方案 456
9.3.2設計和創建SSIS包 458
9.3.3部署包 467
9.4典型用途 472
9.5小結 474
第10章全文檢索 475
10.1SQLServer的存儲方式 476
10.1.1各種版本的存儲共性 477
10.1.2SQLServer7.0以前版本的存儲
方式 480
10.1.3SQLServer7.0及以後版本的存儲
方式 481
10.2索引定義 485
10.2.1B-樹 486
10.2.2訪問數據的原理 488
10.2.3索引類型和索引遍歷 489
10.3創建和刪除索引 502
10.3.1CREATEINDEX語句 502
10.3.2創建約束時暗含的索引 505
10.3.3XML索引 506
10.4選擇創建索引的時機 512
10.4.1可選擇性 512
10.4.2成本 513
10.4.3選擇聚集索引 513
10.4.4列順序問題 515
10.4.5刪除索引 515
10.5維護索引 516
10.5.1碎片 516
10.5.2定義碎片與頁拆分的可能性 516
10.6全文檢索體系結構 520
10.7設定全文索引和分類 521
10.7.1授予資料庫全文搜尋能力 522
10.7.2創建全文目錄 522
10.7.3給獨立的表啟用全文檢索功能 523
10.7.4索引組裝 526
10.8全文查詢語法 528
10.8.1CONTAINS 528
10.8.2FREETEXT 529
10.8.3CONTAINSTABLE 529
10.8.4FREETEXTTABLE 531
10.8.5處理短語 531
10.8.6近似(Proximity) 533
10.8.7前綴條件 533
10.8.8權重 534
10.8.9詞尾變化 535
10.8.10對等級的簡單總結 535
10.9噪聲單詞 535
10.10語言 536
10.11sp_fulltext_service 537
10.12小結 537
第11章事務、鎖和分散式查詢 539
11.1事務 540
11.1.1BEGINTRAN 541
11.1.2COMMITTRAN 541
11.1.3ROLLBACKTRAN 541
11.1.4SAVETRAN 541
11.2事務日誌 542
11.2.1失敗和恢復 544
11.2.2日誌傳送 545
11.2.3隱式事務 546
11.2.4檢查點 547
11.2.5截斷 549
11.2.6收縮事務日誌 550
11.2.7使用事務日誌備份 552
11.2.8事務日誌物理體系結構 554
11.3鎖和並發性 555
11.3.1鎖可以阻止的問題 556
11.3.2可以加鎖的資源 560
11.3.3鎖增加和鎖對性能的影響 560
11.3.4鎖模式 563
11.3.5鎖的兼容性 565
11.3.6說明特定鎖的類型 566
11.4設定隔離層 569
11.5快照隔離 572
11.5.1隔離級別 572
11.5.2行版本控制 573
11.5.3快照隔離事務示例 577
11.5.4通過行版本控制的已提交讀
示例 578
11.6處理死鎖 580
11.6.1指出存在死鎖 580
11.6.2選擇死鎖犧牲品 581
11.6.3避免死鎖 581
11.7故障轉移群集 583
11.8分散式事務 584
11.8.1準備階段 584
11.8.2提交階段 585
11.9分散式查詢 585
11.9.1創建連結伺服器 586
11.9.2使用連結伺服器 588
11.9.3從遠程伺服器上收集元數據 593
11.9.4創建和使用通道查詢 595
11.9.5在遠程數據源上使用特別查詢 597
11.9.6其他分散式查詢的注意事項 598
11.10分散式分區視圖 600
11.11小結 607
第12章SQLServer2005服務 609
12.1服務分割器 609
12.1.1ServiceBroker概念 610
12.1.2ServiceBroker體系結構 612
12.2分析服務 618
12.2.1終端用戶的要求 618
12.2.2維度資料庫 622
12.2.3OLAP存儲類型 627
12.2.4數據倉庫 628
12.2.5數據轉換 630
12.2.6元數據 631
12.2.7數據挖掘模型 634
12.2.8數據挖掘算法 634
12.2.9分析服務體系結構 637
12.2.10商業智慧型增強功能 642
12.3報表服務 643
12.3.1創建和管理報表 645
12.3.2功能與概念 646
12.3.3報表服務體系結構 649
12.4通知服務 650
12.4.1通知服務定義 650
12.4.2關鍵術語 651
12.4.3通知服務體系結構 652
12.5小結 654
第13章性能調試與最佳化 655
13.1索引選擇 656
13.2資料庫引擎最佳化顧問 657
13.2.1工作負荷 658
13.2.2注意事項 659
13.3數據處理 660
13.4策略要求 661
13.5程式維護 662
13.6最佳化存儲過程 662
13.6.1儘可能縮短事務 662
13.6.2儘可能使用限制最少的事務隔
離層 662
13.6.3必要時可以執行多種解決方案 662
13.6.4儘量避免使用游標 663
13.7使用臨時表 663
13.8硬體考慮 663
13.8.1伺服器的獨占使用 664
13.8.2I/O與CPU速度 664
13.8.3OLTP與OLAP 667
13.8.4線上或離線 667
13.8.5宕機 667
13.8.6丟失數據 668
13.8.7性價比 668
13.8.8伺服器 668
13.8.9理想系統 668
13.9解決方法 669
13.9.1各種顯示計畫和統計信息 669
13.9.2資料庫一致性檢驗程式 673
13.9.3查詢控制器(QueryGovernor) 675
13.9.4SQLServerProfiler(事件探
查器) 676
13.9.5性能監視器(Perfmon) 679
13.10小結 681
第14章SQLServer2005管理 682
14.1安全性基礎 683
14.1.1固定登錄ID和口令 683
14.1.2口令有效期 684
14.1.3長度與組成 685
14.1.4登錄次數 686
14.1.5存儲用戶和口令 687
14.2安全性選項 687
14.2.1SQLServer安全性 688
14.2.2作業系統集成安全性 691
14.3用戶許可權 693
14.3.1對特定資料庫授予訪問權 693
14.3.2在資料庫中授予對象許可權 694
14.3.3用戶許可權和語句級的許可權 697
14.4伺服器和資料庫角色 698
14.4.1伺服器角色 698
14.4.2資料庫角色 699
14.5應用程式角色 702
14.5.1創建應用程式角色 703
14.5.2給應用程式角色添加許可權 703
14.5.3使用應用程式角色 703
14.5.4刪除應用程式角色 704
14.6XML的安全性 704
14.7更高級的安全性 705
14.7.1處理Guest賬戶 705
14.7.2TCP/IP連線埠設定 706
14.7.3禁用sa賬戶 706
14.7.4xp_cmdshell 706
14.7.5其他工具 706
14.8調度表作業 707
14.8.1創建操作員 708
14.8.2創建作業和任務 710
14.9備份和還原 720
14.9.1重要性及目標 721
14.9.2備份介質 722
14.9.3備份 724
14.9.4恢複數據 726
14.9.5恢復模式 728
14.9.6恢復最佳化 730
14.9.7SQLServer代理 733
14.10自動回響警報 734
14.10.1在資料庫引擎中創建自動響
應警報 735
14.10.2在T-SQL中創建自動回響
警報 735
14.11全文目錄操縱 737
14.11.1備份與恢復 737
14.11.2安排注入的調度 737
14.12異地複製 737
14.12.1複製資料庫嚮導 737
14.12.2備份和恢復 738
14.12.3連線/分離 738
14.13索引重建 738
14.14歸檔數據 739
14.15小結 740
第15章案例精解 741
15.1AdventureWorks設計基礎 741
15.2AdventureWorks總體設計 742
15.2.1所有者 744
15.2.2相關表 746
15.3AdventureWorks示例 749
15.3.1查詢示例 749
15.3.2分區表和分區索引示例 757
15.3.3CLR觸發器 760
15.4數據挖掘算法 772
15.4.1決策樹算法 772
15.4.2時序算法 774
15.4.3聚類分析算法 777
15.4.4關聯算法 778
15.4.5順序分析和聚類分析算法 780
15.5Xquery語言 781
15.6HTTP訪問 782
15.6.1設定HTTP訪問 783
15.6.2基於URL的查詢 785
15.6.3使用模板 786
15.6.4POST 789
15.6.5XPath 791
15.6.6設計結果的樣式 795
15.7使用IcommandStream設定XML命令 798
15.8小結 821
附錄A函式類別 822
附錄B用WMI編寫管理函式 823
B.1SQLServer腳本管理的歷史和未來 823
B.2WMI工具與結構 824
B.3WMI對象基本知識 826
B.3.1類 827
B.3.2實例 828
B.3.3關聯 829
B.3.4命名空間 829
B.4安裝WMISQLServer管理提供商 830
B.5連線到WMI 834
B.6實例檢索操作 836
B.6.1枚舉所有實例 837
B.6.2得到特定實例 838
B.6.3實例查詢 841
B.6.4關聯查詢 842
B.6.5從實例調用程式中得到最好
性能的技巧 846
B.7修改實例 849
B.8創建實例 851
B.9刪除實例 852
B.10調用方法 853
B.10.1動態方法 853
B.10.2靜態方法 856
B.11使用事件 858
B.11.1實例事件 858
B.11.2非實例事件 863
B.12靜態設定類 864
B.13訪問限定詞 866
B.13.1使用SQLServer特定的限定詞 869
B.13.2SQLVersion 869
B.13.3WriteAtCreate和WriteAtUpdate 870
B.14小結 870
附錄CSQLCMD 871