內容簡介
《貫通SQLServer2008資料庫系統開發》分為25章,包括SQL Server 2008的最基本、最常用、最重要的知識,同時通過貫穿全文的實例使讀者更易、更快地掌握各章的知識點,最後通過實際套用中的完整實例讓讀者順利地將所學理論知識運用到實際工作中去。全書內容由淺入深,並輔以大量的實例說明,使讀者能更快、更好地掌握SQL Server 2008。隨書的配套光碟中含有全書所有實例的原始碼,供讀者學習參考使用。
本書可供初學者作為入門書籍,也可為有一定的SQL Server編程基礎的程式設計師作為參考用書,對於缺乏項目實戰經驗的程式設計師還可用於快速積累項目開發經驗。
目錄
第 1 篇 基礎知識篇
第1章 SQL Server 2008概述、安裝和配置 2
1.1 SQL Server 2008概述 2
1.1.1 資料庫引擎 3
1.1.2 分析服務 3
1.1.3 集成服務 3
1.1.4 複製 4
1.1.5 報表服務 4
1.1.6 通知服務 4
1.1.7 全文搜尋 5
1.1.8 Service Broker 5
1.2 選擇SQL Server 2008的優勢 5
1.3 安裝SQL Server 2008軟、硬體要求 6
1.4 安裝示例 7
1.5 伺服器網路配置 13
1.5.1 SQL Server配置管理器 13
1.5.2 配置伺服器網路協定和網路庫 14
1.5.3 加密與SQL Server的連線 14
1.6 客戶端網路配置 16
1.6.1 本地客戶端配置 17
1.6.2 使用防火牆系統 20
1.7 小結 23
第2章 SQL Server 2008新增及加強功能介紹 24
2.1 新增及加強功能簡介 24
2.2 安全方面 25
2.2.1 加密 25
2.2.2 審計 26
2.3 管理方面 26
2.3.1 數據壓縮 26
2.3.2 資源管理器 26
2.3.3 管理非結構化數據 27
2.4 開發方面 27
2.4.1 一次性插入多行數據 27
2.4.2 FORCESEEK提示 27
2.4.3 GROUPING SETS 28
2.4.4 兼容性級別 28
2.4.5 用戶自定義表數據類型 29
2.4.6 表值參數 29
2.4.7 MERGE語句 30
2.5 新的數據類型 31
2.6 安裝 34
2.7 系統效能方面 34
2.8 其他增強 34
2.8.1 報表服務的新功能 34
2.8.2 伺服器合併解決方案 35
2.8.3 與Microsoft Office 2007結合 36
2.8.4 SQL Server集成服務 36
2.8.5 SQL Server分析服務 36
2.9 小結 36
第3章 SQL Server管理工具集 37
3.1 SQL Server管理工具集簡介 37
3.2 功能組件和工具視窗介紹 39
3.3 使用SQL Server管理工具集管理伺服器 44
3.4 使用SQL Server管理工具集編寫、分析和編輯腳本 45
3.5 使用SQL Server管理工具集模板 52
3.6 在SQL Server管理工具集中開發解決方案和項目 55
3.7 SQL Server管理工具集與其他組件協同工作 61
3.8 小結 61
第4章 資料庫和規範式 62
4.1 概述 62
4.2 資料庫的物理存儲結構設計和邏輯結構設計 64
4.2.1 資料庫物理存儲結構設計 64
4.2.2 資料庫邏輯結構設計 69
4.3 創建資料庫 73
4.4 刪除資料庫 76
4.5 修改資料庫 78
4.5.1 修改資料庫的名稱 78
4.5.2 更改資料庫所有者 78
4.6 資料庫設計規範式 79
4.8 小結 85
第5章 表 86
5.1 概述 86
5.2 表的結構 86
5.3 創建表 87
5.3.1 欄位 89
5.3.2 數據類型 89
5.3.3 表設計 93
5.3.4 全局唯一標識符與自動編號欄位 93
5.3.5 用戶定義數據類型 95
5.3.6 創建計算欄位 96
5.4 修改數據記錄 97
5.5 更改表設計 98
5.6 刪除表 102
5.7 表的連線 103
5.8 表的其他操作 106
5.8.1 表的導入 106
5.8.2 鎖定表的某些記錄 109
5.9 小結 111
第6章 索引 112
6.1 概述 112
6.2 索引的基本概念 113
6.2.1 索引的結構 113
6.2.2 索引的優點和缺點 113
6.3 索引的設計準則 113
6.4 索引的類型 115
6.4.1 聚集索引與非聚集索引 115
6.4.2 唯一索引與非唯一索引 118
6.4.3 單列索引與多列索引 119
6.5 填充因子 119
6.6 創建索引 120
6.7 禁用索引 125
6.8 刪除索引 128
6.9 小結 132
第7章 視圖 133
7.1 視圖概述 133
7.1.1 視圖的優點 134
7.1.2 視圖的類型 134
7.2 創建視圖 135
7.2.1 創建視圖的準則 135
7.2.2 創建視圖的方法 136
7.3 使用視圖 141
7.3.1 使用索引視圖 141
7.3.2 使用分區視圖 145
7.4 可更新的視圖 147
7.5 通過視圖來更新數據 148
7.6 更改視圖 151
7.6.1 更改視圖的名稱 152
7.6.2 更改視圖的定義 152
7.7 刪除視圖 154
7.8 小結 154
第8章 資料庫的備份、還原和維護 155
8.1 概述 155
8.2 備份資料庫 156
8.2.1 備份概述 156
8.2.2 完全備份 158
8.2.3 差異備份 161
8.2.4 使用事務日誌備份 163
8.2.5 將資料庫遷移到其他系統進行備份 164
8.2.6 導入/導出 165
8.3 還原和恢複數據庫 168
8.3.1 還原方案 168
8.3.2 解決孤立用戶 169
8.3.3 還原差異資料庫備份 170
8.3.4 還原事務日誌備份 174
8.3.5 完全恢復 178
8.3.6 大容量日誌記錄恢復 179
8.4 備份和恢復系統資料庫 180
8.4.1 備份系統資料庫 180
8.4.2 還原系統資料庫 181
8.5 附加和分離資料庫 182
8.5.1 分離資料庫 182
8.5.2 附加資料庫 185
8.5.3 使用分離和附加操作來移動資料庫 187
8.6 複製 187
8.6.1 複製類型概述 188
8.6.2 執行複製 189
8.7 維護計畫和策略 195
8.7.1 維護計畫概述 195
8.7.2 如何創建維護計畫 196
8.8 小結 198
第9章 存儲過程 199
9.1 存儲過程概述 199
9.1.1 存儲過程的優缺點 199
9.1.2 存儲過程的種類 200
9.2 創建存儲過程 201
9.2.1 創建自定義存儲過程時的一些注意事項 201
9.2.2 創建用戶自定義存儲過程 201
9.2.3 擴展存儲過程 203
9.2.4 存儲過程表達式語法解析 203
9.2.5 參數 211
9.2.6 游標 211
9.2.7 嵌套存儲過程 213
9.2.8 在存儲過程中使用資料庫事務處理 215
9.3 執行存儲過程 215
9.3.1 在SQL Server中執行存儲過程 215
9.3.2 在Java/JSP中調用存儲過程 216
9.4 更新存儲過程 216
9.4.1 重命名存儲過程 216
9.4.2 修改存儲過程 217
9.4.3 重新編譯存儲過程 219
9.5 刪除存儲過程 219
9.6 系統存儲過程 221
9.7 最佳化存儲過程 222
9.8 存儲過程分頁 222
9.9 項目示例:企業員工考勤查詢系統 226
9.10 小結 232
第10章 T-SQL基礎 233
10.1 概述 233
10.1.1 T-SQL語言的特點 233
10.1.2 T-SQL語言類型 234
10.2 數據類型 234
10.3 關係代數 236
10.4 T-SQL基本語法約定 240
10.5 變數 240
10.6 運算符 243
10.7 函式 245
10.8 控制流程語句 253
10.9 小結 258
第11章 高級T-SQL 259
11.1 概述 259
11.2 腳本與批處理 259
11.2.1 使用INSERT...SELECT進行批處理添加 259
11.2.2 使用INSERT TOP進行批處理添加 261
11.2.3 使用SELECT...INTO進行批處理添加 261
11.3 添加存儲過程的查詢結果 262
11.4 使用UPDATE TOP修改數據記錄 263
11.5 刪除數據記錄 264
11.5.1 使用DELETE TOP刪除數據記錄 264
11.5.2 使用帶OUTPUT子句的DELETE刪除數據記錄 264
11.5.3 使用TRUNCATE TABLE表達式刪除數據記錄 265
11.6 匯總和分組數據 266
11.6.1 使用GROUP BY 266
11.6.2 使用COMPUTE BY 268
11.7 模糊查詢 270
11.8 使用T-SQL代碼進行全文索引 271
11.9 小結 284
第12章 觸發器 285
12.1 概述 285
12.2 創建觸發器 287
12.3 修改觸發器 290
12.3.1 查看觸發器 290
12.3.2 修改觸發器的定義 292
12.3.3 重命名觸發器 292
12.4 禁用與啟用觸發器 293
12.5 刪除觸發器 293
12.6 嵌套觸發器 294
12.7 遞歸觸發器 297
12.8 使用觸發器 298
12.8.1 使用觸發器概述 298
12.8.2 檢查特定的欄位是否已被修改 299
12.8.3 使用包含ROLLBACK TRANSACTION
表達式的觸發器 300
12.8.4 有條件的INSERT觸發器 301
12.8.5 指定AFTER觸發器的順序 301
12.8.6 使用INSTEAD OF觸發器更新視圖 304
12.8.7 使用TRY...CATCH表達式 306
12.8.8 使用sp_addmessage創建用戶定義錯誤訊息 309
12.9 DDL觸發器、DML觸發器和CLR觸發器 309
12.9.1 DDL觸發器 309
12.9.2 DML觸發器 314
12.9.3 CLR觸發器 315
12.10 實例:員工就餐統計系統 317
12.11 小結 324
第13章 作業和警報 325
13.1 概述 325
13.2 創建作業 325
13.3 管理作業 329
13.3.1 修改作業 329
13.3.2 運行作業 332
13.3.3 禁用作業 333
13.3.4 停止作業 334
13.3.5 刪除作業 335
13.4 作業回響 336
13.5 警報 338
13.5.1 創建事件警報 338
13.5.2 創建性能警報 340
13.5.3 編輯警報 341
13.5.4 刪除警報 343
13.6 操作員 343
13.6.1 創建操作員 343
13.6.2 向操作員分配警報 345
13.6.3 修改操作員 346
13.6.4 刪除操作員 348
13.7 為作業通知和警報配置SQL Server Agent Mail 348
13.8 診斷及解決作業和警報故障 349
13.9 實例:企業巡更考勤系統 350
13.10 小結 352
第14章 安全 353
14.1 概述 353
14.2 身份驗證 354
14.2.1 身份驗證模式概述 354
14.2.2 身份驗證模式的更改 354
14.3 安全管理 355
14.3.1 SQL Server登錄管理 356
14.3.2 資料庫角色管理 360
14.3.3 許可權管理 361
14.3.4 應用程式角色管理 365
14.3.5 事務日誌管理 366
14.4 訪問管理 367
14.4.1 啟用Guest用戶 368
14.4.2 拒絕用戶訪問 368
14.4.3 管理對資料庫的訪問 370
14.4.4 對資料庫訪問進行授權 372
14.4.5 管理對表和列的訪問 373
14.5 數據檔案安全 375
14.6 安全配置 377
安全配置策略 377
14.7 加密 380
14.8 小結 384
第15章 SQL Server報表服務 385
15.1 SQL Server報表服務概述 385
15.2 報表服務體系架構 386
15.3 報表服務功能 388
15.4 安裝SQL Server報表服務 390
15.5 配置報表服務 394
15.6 創建和設計報表 399
15.7 部署報表服務 402
15.7.1 報表服務的部署模式 402
15.7.2 報表服務部署計畫 404
15.7.3 複製報表伺服器環境 406
15.8 訪問報表 407
15.9 發布報表 408
15.10 管理報表服務 411
15.10.1 管理報表服務的要求 411
15.10.2 報表伺服器管理工具 411
15.10.3 報表服務安裝的備份和還原 413
15.10.4 報表伺服器資料庫 414
15.11 小結 416
第16章 商業智慧型開發套件 417
16.1 概述 417
16.2 BIDS圖形界面介紹 417
16.2.1 起始頁 418
16.2.2 BIDS主界面 418
16.2.3 選單 419
16.2.4 自定義環境、工具和視窗 421
16.3 生成BI解決方案 423
16.4 設計、開發和調試SQL Server Integration Services包 426
16.5 小結 436
第17章 分析服務 437
17.1 概述 437
17.2 多維數據 437
17.3 數據挖掘 438
17.4 使用分析服務 440
17.5 小結 456
第18章 集成服務 457
18.1 概述 457
18.2 複製和下載檔案 459
18.2.1 FTP任務 460
18.2.2 檔案系統任務 463
18.3 傳送電子郵件以回響事件 467
18.4 管理SQL Server對象和數據 472
18.5 小結 476
第19章 性能工具 477
19.1 概述 477
19.2 資料庫引擎最佳化顧問 477
19.2.1 資料庫引擎最佳化顧問圖形用戶界面(GUI)程式 478
19.2.2 dta實用工具 484
19.3 SQL Server事件探查器(SQL Server Profiler) 489
19.3.1 SQL跟蹤 489
19.3.2 使用SQL Server事件探查器 490
19.4 小結 495
第20章 配置工具 496
20.1 概述 496
20.2 報表服務配置管理器 496
20.3 SQL Server配置管理器 498
20.4 SQL Server錯誤和使用情況報告 500
20.5 SQL Server安裝中心 501
20.6 小結 502
第 2 篇 互動提高篇
第21章 提高查詢性能 504
21.1 概述 504
21.2 建立索引以快速執行查詢 504
21.3 用“資料庫引擎最佳化顧問”來最佳化查詢 509
21.4 其他提高查詢性能方法 513
21.5 小結 514
第22章 訪問SQL Server 2008 516
22.1 配置伺服器 516
22.2 訪問SQL Server 519
22.3 遠程訪問 522
22.4 區域網路中多個SQL Server 2008互聯同步數據 524
22.5 項目實例:服務部就餐統計系統 526
22.6 小結 532
第23章 SQL Server 2008與Office 2007集成 533
23.1 概述 533
23.2 SQL Server與Excel的集成 533
23.2.1 在Excel中使用SQL Server的數據 533
23.2.2 Excel數據轉入到SQL Server 536
23.3 SQL Server 2008數據挖掘外接程式 541
23.3.1 Excel表分析工具 542
23.3.2 Excel數據挖掘客戶端 550
23.3.3 數據挖掘Visio模板 556
23.4 使用SQL Server 2008和Office 2007
構造OLAP報表套用 561
23.5 小結 564
第24章 Java與SQL Server 565
24.1 概述 565
24.2 使用JDBC與SQL Server進行互動 565
24.3 使用ODBC與SQL Server進行互動 567
24.4 項目實例:數位化圖書管理系統 571
24.5 小結 579
第 3 篇 項目實戰篇
第25章 完整項目實例 581
25.1 概述 581
25.2 企業巡更考勤系統(B/S) 581
25.3 數位化圖書管理系統(C/S與B/S結合) 598
25.4 小結 620
實例目錄
例2-1 一次插入多行數據 27
例2-2 FORCESEEK提示 28
例2-3 使用CREATE TYPE語句創建用戶自定義表數據類型 29
例2-4 使用表值參數 29
例2-5 使用MERGE在一張表上執行更新和刪除操作 31
例2-6 新數據類型1 31
例2-7 新數據類型2 32
例2-8 新數據類型3 32
例2-9 設定系統數據類型 datetime2 32
例2-10 控制數據類型的精度 33
例2-11 新數據類型4 33
例2-12 經理和雇員之間的父子關係 33
例3-1 縮進代碼 49
例3-2 查找特定部分順序的存儲過程 53
例3-3 使用自定義模板 54
例3-4 確定結束日期早於開始日期的工作訂單 59
例4-1 創建未指定檔案的資料庫 75
例4-2 創建指定數據和事務日誌檔案的資料庫 76
例4-3 刪除單個資料庫 77
例4-4 刪除多個資料庫 77
例4-5 刪除資料庫快照 77
例4-6 修改資料庫名 78
例4-7 修改資料庫所有者 79
例4-8 重建系統資料庫 85
例8-1 備份到磁碟設備 159
例8-2 創建完整備份和差異備份 162
例8-3 數據合併 166
例8-4 通過OPENDATASOURCE查詢表t1 166
例8-5 通過OPENROWSET查詢表t1 166
例8-6 使用bcp 167
例8-7 通過SQL執行bcp 167
例8-8 數據轉換 167
例8-9 查找孤立用戶 170
例8-10 將用戶名對應的登錄名添加到syslogins中 170
例8-11 將用戶名映射為指定的登錄名 170
例8-12 解決dbo為孤立用戶的情況 170
例8-13 還原資料庫及差異資料庫備份 173
例8-14 還原資料庫及其差異資料庫和事務日誌備份 173
例8-15 事務日誌還原到某個標記處 177
例8-16 還原完整資料庫 179
例8-17 分離資料庫1 183
例8-18 分離資料庫2 183
例8-19 打開資料庫主密鑰 185
例8-20 對主密鑰啟用自動加密 185
例9-1 判斷存儲過程是否存在 201
例9-2 創建存儲過程 202
例9-3 帶有複雜SELECT語句的簡單過程 205
例9-4 帶有參數的簡單過程 206
例9-5 帶有通配符參數的簡單過程 207
例9-6 使用OUTPUT參數的過程 208
例9-7 使用OUTPUT游標參數的過程 209
例9-8 使用WITH RECOMPILE選項的過程 210
例9-9 使用WITH ENCRYPTION選項過程 210
例9-10 創建帶參數的儲存過程 211
例9-11 在存儲過程中使用游標 212
例9-12 在JSP中調用存儲過程 216
例9-13 重命名存儲過程 217
例9-14 修改存儲過程test 218
例9-15 在Database Engine Query中刪除存儲過程 220
例9-16 刪除擴展存儲過程 220
例9-18 staffQuery.jsp 227
例9-19 創建存儲過程kqOnDutyReport1 229
例9-20 創建存儲過程SelectCDate1 230
例12-1 傳送通知郵件 288
例12-2 INSTEAD OF觸發器 288
例12-3 觸發器中IF UPDATE套用 288
例12-4 虛擬表inserted和deleted 288
例12-5 創建觸發器 289
例12-6 更新t2表中的數據 290
例12-7 查詢某個資料庫中的所有觸發器 290
例12-8 使用SQL 語句查看觸發器tg_sum的內容 291
例12-9 修改觸發器的內容 292
例12-10 修改觸發器名 293
例12-11 禁用觸發器tg_sum 293
例12-12 刪除觸發器 294
例12-13 創建操作記錄表 295
例12-14 在數據表上創建觸發器 295
例12-15 創建類別表 295
例12-16 在類別表上創建觸發器 296
例12-17 檢測表t的第二列和第三列是否被修改過 299
例12-18 觸發器回滾 300
例12-19 觸發器回滾 301
例12-20 觸發器回滾 301
例12-21 有條件的INSERT觸發器 301
例12-22 創建product_Insert觸發器 302
例12-23 創建product_Insert1觸發器 302
例12-24 改變觸發器次序 303
例12-25 使用Instead Of觸發器 305
例12-26 包含錯誤處理函式的存儲過程 307
例12-27 CATCH塊捕捉錯誤 308
例12-28 TRY CATCH構造處理錯誤 308
例12-29 創建用戶定義訊息 309
例12-30 調用定義的錯誤訊息 309
例12-31 創建用於保護資料庫中的數據表不被修改和刪除的存儲過程 312
例12-32 創建用於保護當前SQL Server伺服器里所有資料庫不能被刪除
的存儲過程 312
例12-33 創建用來記錄資料庫修改狀態的觸發器 313
例12-34 判斷庫存數量是否為0 315
例12-35 使用inserted表 316
例12-36 員工就餐統計系統 317
例13-1 添加一個沒有功能的作業 328
例13-2 添加一個具有尋呼、電子郵件和網路傳送信息的作業 328
例13-3 修改作業 329
例13-5 更改原來存在的作業步驟 330
例13-6 刪除原先存在的作業步驟 331
例13-7 從作業中刪除關聯伺服器 331
例13-8 將作業指派給本地伺服器 331
例13-9 將作業指派給不同的伺服器 332
例13-10 啟動作業 333
例13-11 更改作業的名稱 334
例13-12 停止一個作業 335
例13-13 刪除一個作業 336
例13-14 為警報添加電子郵件通知 337
例13-15 創建事件警報 340
例13-16 編輯警報 342
例13-17 刪除警報 343
例13-18 設定操作員信息 345
例13-19 修改操作員信息 347
例13-20 刪除操作員 348
例13-21 企業巡更考勤系統 350
例14-1 創建登錄ID和默認資料庫 358
例14-2 創建使用其他默認語言的登錄ID 358
例14-3 創建帶有特定SID的登錄ID 358
例14-4 刪除登錄 358
例14-5 將Windows NT用戶設定為SQL Server登錄者 358
例14-6 拒絕Windows NT用戶登錄到SQL Server 359
例14-7 刪除Windows NT用戶的登錄信息 359
例14-8 顯示登錄信息 360
例14-9 將用戶添加到固定伺服器角色中 361
例14-10 創建應用程式角色 365
例14-11 刪除資料庫中的應用程式角色 365
例14-12 修改應用程式角色的密碼 366
例14-13 啟用Guest用戶 368
例14-14 啟用/禁用登錄名 368
例14-15 檢查被禁用的登錄名 368
例14-16 刪除登錄名 370
例14-17 創建資料庫角色並添加用戶 370
例14-18 判斷當前用戶 371
例14-19 刪除用戶及角色 371
例14-20 為資料庫用戶授予某種許可權 371
例14-21 創建資料庫用戶 372
例14-22 撤銷用戶授權 372
例14-24 授予用戶對表的操作許可權 373
例14-25 收回賦予給某個用戶的許可權 374
例14-26 拒絕用戶訪問 374
例14-27 授予許可權 374
例14-29 產生資料庫主密鑰 381
例14-30 產生密鑰 382
例14-31 加密數據 382
例14-32 數據解密 383
例14-33 用RC4算法產生對稱密鑰 383
例15-1 報表伺服器的URL示例 396
例22-1 查詢當前連線所使用的協定 521
例22-2 使用連線字元串連線SQL Server 522
例22-3 創建一個連結伺服器 526
例22-4 服務部就餐統計系統 526
例24-1 使用JDBC連線MS SQL Server 566
例24-2 使用ODBC數據源連線MS SQL Server 571
例24-3 數位化圖書管理系統 571
例25-1 企業巡更考勤系統(B/S) 581
例25-2 數位化圖書管理系統(C/S與B/S結合) 598
宣傳語
通五經,貫六藝
遵循循序漸進的原則,
逐步引領讀者從基礎到各個知識點的學習,
通過兩個實例項目進行全面剖析SQL Server在實際工程中的套用。