內容簡介目錄內容提要本書是作者多年從事SQL Server 2000數據庫系統(tǒng)管理、應用開發(fā)和教學培訓的經驗總結。全書深入淺出地剖析了SQL Server 2000系統(tǒng)管理和應用開發(fā)的重點技術,突出了讀者容易忽略的,但又是管理和開發(fā)實踐中需要注意的重點,比如網絡和數據庫的結合、SQL Server 2000的體系結構、高效的SQL語句設計、優(yōu)化的索引設計、備份和恢復的實現機制、ADO的體系結構和報表的設計藝術等。相信讀者會有耳目一新的感覺。全書分為3個部分,共22章,內容包括構建SQL Server 2000網絡、SQL Server 2000的體系結構、管理和配置服務器、管理和配置數據庫、DBCC命令、數據三套車、Transact-SQL、數據安全性、數據并發(fā)性、備份和恢復、性能監(jiān)控和優(yōu)化、基于ADO技術的VB數據庫項目開發(fā)等。本書內容全面、思路流暢、實用性強,所有實例均經過上機反復實踐;對常見的問題提出了解決方案,具有很強的指導性。本書適合SQL Server 2000數據庫管理人員、數據庫應用開發(fā)人員閱讀和參考,可作為管理SQL Server 2000數據庫的技術手冊、數據庫技術培訓教材以及參加SQL Server 2000認證考試的參考書。本書配套光盤包括各章標注的內容以及17個多媒體實驗。 目 錄第一部分SQL Server 2000系統(tǒng)管理 第1章 構建SQL Server 2000網絡 31.1 本章導讀 31.2 初識計算機網絡 31.2.1 計算機網絡的定義 31.2.2 計算機網絡的發(fā)展歷程 41.2.3 計算機網絡的分類 51.2.4 計算機網絡的拓撲結構 51.2.5 網絡中的計算機通信的原理 61.2.6 TCP/IP 71.2.7 客戶機/服務器模式 91.2.8 端口 91.2.9 配置計算機的IP地址 101.2.10 查看計算機的端口使用情況 101.3 初識數據庫 111.3.1 數據庫系統(tǒng) 111.3.2 數據庫 111.3.3 數據庫管理系統(tǒng) 121.3.4 數據庫應用系統(tǒng) 121.3.5 數據庫系統(tǒng)相關人員 121.3.6 關系模型 121.3.7 關系型數據庫 131.3.8 關系型數據表的關聯關系 131.3.9 關系型數據的完整性 141.4 初識關系型網絡數據庫 161.4.1 關系型網絡數據庫的特點 161.4.2 關系型網絡數據庫的工作模式 161.5 初識SQL Server 2000 171.5.1 SQL Server 2000的產品版本 171.5.2 安裝環(huán)境需求 181.5.3 實例(Instance) 191.5.4 服務賬戶 191.5.5 身份驗證模式 201.5.6 客戶機許可模式 201.5.7 SQL Server 2000網絡采用的通信協議 211.6 構建SQL Server 2000服務器和客戶機 211.6.1 構建SQL Server 2000服務器 211.6.2 構建SQL Server 2000客戶機 251.7 實驗:遠程客戶機能否通過共享內存訪問服務器 251.7.1 在服務器上配置共享內存 261.7.2 在本地客戶機上配置共享內存 281.7.3 在遠程客戶機上配置共享內存 291.7.4 實驗結論 291.8 實驗:配置命名管道的SQL Server 2000網絡 291.8.1 在服務器上配置命名管道 301.8.2 在本地客戶機上配置命名管道 311.8.3 在遠程客戶機上配置命名管道 321.8.4 實驗結論 331.9 實驗:配置TCP/IP的SQL Server 2000網絡 331.9.1 在服務器上配置TCP/IP 331.9.2 在本地客戶機上配置TCP/IP 341.9.3 在遠程客戶機上配置TCP/IP 351.9.4 實驗結論 351.10 實驗:明明白白配置TCP/IP的端口 351.10.1 更改服務器的端口 351.10.2 客戶機上如何進行配置 361.10.3 什么是動態(tài)決定端口 361.10.4 實驗結論 371.11 實驗:配置多協議的SQL Server 2000網絡 381.11.1 在服務器上配置多協議 381.11.2 在本地客戶機上配置多協議 391.11.3 在遠程客戶機上配置多協議 391.11.4 實驗結論 391.12 實驗:Winsock代理設置的含義 401.12.1 什么是代理服務 401.12.2 什么是Winsock代理 411.12.3 在服務器上設置Winsock代理 411.12.4 在客戶機上配置Winsock代理 421.12.5 實驗結論 421.13 實驗:為什么強制協議加密導致服務器無法啟動 421.13.1 在服務器上配置強制協議加密 431.13.2 實驗結論 431.14 疑難解析 441.14.1 Windows XP上可以安裝什么SQL Server 2000版本 441.14.2 Windows 2003上如何安裝SQL Server 2000企業(yè)版 441.14.3 啟動提示"1069錯誤(由于登錄失敗而無法啟動服務)"如何解決 441.14.4 服務器的1433端口沒有啟動如何解決 451.14.5 如何下載SQL Server 2000的SP3 451.14.6 如何遠程管理Internet上的SQL Server 2000服務器 451.14.7 如何卸載SQL Server 2000 461.14.8 排除SQL Server 2000網絡連接故障 461.14.9 排除SQL Server 2000連接超時故障 471.14.10 什么是數據字典 471.14.11 DBA都有什么職責 471.14.12 DBA日常如何工作 481.14.13 什么是數據庫的模型 491.14.14 什么是IPC機制 501.14.15 什么是網絡庫(Net-Library) 501.14.16 什么是關系型數據庫的范式 501.15 本章小結 511.16 實踐題目 51第2章 SQL Server 2000的體系結構 532.1 本章導讀 532.2 SQL Server 2000網絡結構 532.2.1 SQL Server 2000的C/S模式 542.2.2 客戶機的結構 542.2.3 服務器的結構 552.3 SQL Server 2000服務器的引擎結構 572.3.1 SQL Server 2000引擎工作流程 572.3.2 SQL Server 2000引擎的設計 592.4 SQL Server 2000服務器的內存結構 612.4.1 為什么要設計內存 612.4.2 如何為SQL Server 2000服務器分配內存 612.4.3 SQL Server 2000服務器內存有什么內容 622.4.4 如何快速訪問SQL Server 2000服務器內存 622.4.5 如何替換SQL Server 2000服務器內存頁面 632.4.6 SQL Server 2000服務器日志緩沖池如何管理 632.5 SQL Server 2000服務器的存儲結構 642.5.1 SQL Server 2000服務器的物理文件 642.5.2 頁面(Page):SQL Server 2000數據文件的存儲單位 642.5.3 頁面是如何存儲數據的 652.5.4 DBCC PAGE:如何查看頁面的數據 652.5.5 如何查詢數據庫的ID和名稱 662.5.6 如何查詢數據文件的ID和名稱 672.5.7 一個查詢數據頁面信息的實例 672.5.8 內存是如何管理數據頁面的 712.5.9 頁頭:物理頁面是如何管理的 712.5.10 如何查詢ID所屬的數據對象 722.5.11 槽(Slot):數據記錄(行)在數據頁面中如何存儲 732.5.12 盤區(qū)(Extent):SQL Server 2000是如何分配存儲空間的 742.5.13 如何提高盤區(qū)的空間利用率 742.5.14 GAM:SQL Server 2000的盤區(qū)是如何管理的 752.5.15 SGAM:SQL Server 2000的混合盤區(qū)是如何管理的 762.5.16 SQL Server 2000如何為數據對象分配盤區(qū) 772.5.17 數據文件的頁面結構是怎樣的 772.5.18 如何查詢數據文件的頁面數 782.5.19 如何查詢數據庫的頁面數 782.5.20 如何查詢數據庫的盤區(qū)數 782.5.21 如何查詢數據對象的盤區(qū)數 792.5.22 LOB數據是如何存儲的 802.5.23 如何將小的LOB數據保存在數據頁面內 802.5.24 日志文件的存儲空間是如何管理的 812.6 SQL Server 2000服務器的進程結構 812.6.1 什么是SQL Server 2000進程 812.6.2 什么是SQL Server 2000線程 812.6.3 什么是SQL Server 2000纖程 822.6.4 SQL語句是怎樣使用CPU資源的 822.6.5 線程或者纖程分配越多效率就越高嗎 832.6.6 什么是線程或者纖程的執(zhí)行優(yōu)先級 832.7 實驗:SQL Server 2000如何管理表 832.7.1 創(chuàng)建測試用數據表 832.7.2 分析日志內容 842.7.3 驗證系統(tǒng)表中產生的信息 872.7.4 實驗結論 882.8 實驗:對數據頁面存儲參數的深入研究 892.8.1 pminlen參數的含義 892.8.2 m_freecnt參數的含義 902.8.3 數據頁面空間是如何分配的 902.9 實驗:揭秘定長記錄(行)的存儲空間 912.9.1 向定長數據表中錄入數據 912.9.2 用DBCC PAGE查看定長記錄的存儲 942.9.3 數據頁面的空間分配 952.9.4 總結定長行存儲空間的計算方法 952.10 實驗:揭秘變長記錄(行)的存儲空間 962.10.1 向變長數據表中錄入數據 962.10.2 用DBCC PAGE查看變長記錄的存儲空間 982.10.3 數據頁面的空間分配 992.10.4 總結變長行存儲空間的計算方法 992.10.5 總結計算表行存儲空間的方法 1002.11 實驗:為什么包含LOB類型的記錄可以跨越頁面 1002.11.1 LOB對象記錄的存儲機制 1012.11.2 研究LOB類型的表的存儲 1022.11.3 實驗結論 1042.12 實驗:將LOB數據和普通數據存儲在同一個頁面 1052.12.1 將LOB數據和普通數據存儲在同一頁面 1052.12.2 將LOB數據和普通數據分開存儲 1062.13 實驗:NULL值是否占用存儲空間 1062.13.1 定長和變長字段都取NULL值 1072.13.2 定長字段取NULL值、變長字段取NOT NULL值 1082.13.3 定長字段取NOT NULL值、變長字段取NULL值 1092.13.4 定長和變長字段都取NOT NULL值 1102.13.5 實驗結論 1112.14 疑難解析 1112.14.1 為什么頁面可以存儲的數據容量參數不一致 1112.14.2 能不能將特定的數據始終保留在內存中 1112.14.3 最多可以為SQL Server 2000分配多少內存 1112.14.4 如何判斷SQL Server 2000內存夠不夠用 1112.14.5 什么是Read Ahead(先讀) 1122.14.6 什么是旋轉木馬掃描(Merry-Go-Round Scan) 1122.14.7 同步VS.異步:數據和日志文件的寫機制區(qū)別 1132.14.8 什么時機使用纖程 1132.14.9 線程數和連接數有無關系 1142.14.10 什么是零散收集I/O 1142.14.11 什么是異步I/O 1142.14.12 什么是TDS 1142.14.13 什么是Latch 1152.15 本章小結 1152.16 實踐題目 115第3章 管理和配置服務器 1183.1 本章導讀 1183.2 服務器的管理和配置工具 1183.2.1 MMC和企業(yè)管理器是什么關系 1193.2.2 如何配置企業(yè)管理器 1193.2.3 為什么查詢分析器查詢的對象名無效 1213.2.4 查詢分析器顯示的執(zhí)行計劃有什么意義 1223.2.5 查詢分析器顯示的服務器跟蹤有什么意義 1233.2.6 查詢分析器顯示的客戶統(tǒng)計有什么意義 1233.2.7 什么是查詢分析器的模板(Template) 1243.3 服務器組 1253.3.1 什么是服務器組 1253.3.2 什么是基于服務器組的管理結構 1253.4 注冊服務器 1253.4.1 什么是服務器的注冊 1253.4.2 什么情況下需要注冊服務器 1263.4.3 怎樣注冊一個服務器 1263.5 暫停、啟動和關閉服務器 1273.5.1 什么時機需要暫停服務器 1283.5.2 如何暫停服務器 1283.5.3 如何關閉服務器 1283.5.4 關閉和暫停服務器有什么區(qū)別 1293.5.5 如何啟動服務器 1293.5.6 在企業(yè)管理器中管理服務器 1303.6 配置服務器 1303.6.1 怎樣查看服務器的環(huán)境信息 1303.6.2 什么是服務器的排序規(guī)則 1313.6.3 哪些服務可以自動啟動 1313.6.4 什么是服務器的錯誤報告功能 1323.6.5 如何配置使用動態(tài)內存的服務器 1323.6.6 如何配置一個使用固定內存的服務器 1333.6.7 SQL Server 2000服務器可以使用哪些CPU 1333.6.8 如何設置CPU的最大線程數 1333.6.9 是否提升SQL Server 2000線程的優(yōu)先級 1343.6.10 使用線程還是纖程 1343.6.11 是否啟用多CPU做并行查詢 1343.6.12 如何更改服務器的身份驗證方式 1343.6.13 如何對服務器進行審核 1353.6.14 如何查看服務器的審核信息 1353.6.15 誰可以啟動服務器 1363.6.16 如何限制并發(fā)連接的用戶數 1373.6.17 如何在服務器之間執(zhí)行分布式事務 1373.6.18 什么是用戶的默認語言 1383.6.19 如何控制服務器的行為 1383.6.20 服務器如何解釋兩位數年份 1393.6.21 什么是索引填充因子 1393.6.22 如何設置磁帶備份和還原參數 1413.6.23 什么是恢復間隔 1413.6.24 創(chuàng)建數據庫的文件存放在哪里 1423.6.25 如何查詢服務器的當前配置參數 1423.6.26 如何查詢服務器的當前運行參數 1423.7 多服務器環(huán)境的管理和配置 1433.7.1 創(chuàng)建和使用鏈接服務器 1433.7.2 創(chuàng)建和使用遠程服務器 1453.8 疑難解析 1463.8.1 注冊名為Local如何處理 1463.8.2 如何設置服務器的內存大小 1463.8.3 為什么服務器占用內存太多 1463.8.4 什么是服務器的錯誤日志 1473.9 本章小結 1473.10 實踐題目 148第4章 管理和配置數據庫 1494.1 本章導讀 1494.2 默認的4個系統(tǒng)數據庫 1504.2.1 master數據庫有什么作用 1504.2.2 model數據庫有什么作用 1504.2.3 msdb數據庫有什么作用 1504.2.4 tempdb數據庫有什么作用 1504.2.5 4個系統(tǒng)數據庫是如何啟動的 1514.3 創(chuàng)建用戶數據庫 1524.3.1 誰可以創(chuàng)建用戶數據庫 1524.3.2 如何命名用戶數據庫 1524.3.3 創(chuàng)建用戶數據庫會產生哪些操作系統(tǒng)文件 1524.3.4 為什么要評估數據文件的初始大小 1534.3.5 粗略評估數據文件初始大小的案例 1534.3.6 創(chuàng)建用戶數據庫的案例 1534.4 配置用戶數據庫 1554.4.1 數據庫工作在什么狀態(tài) 1554.4.2 數據庫當前空間利用率是多少 1564.4.3 怎樣添加次要數據文件 1564.4.4 數據文件之間怎樣存儲數據 1564.4.5 怎樣添加多個日志文件 1574.4.6 日志文件之間怎樣存儲數據 1574.4.7 什么是文件組 1584.4.8 什么是默認的文件組 1584.4.9 如何使用文件組 1584.4.10 如何創(chuàng)建文件組 1594.4.11 如何限制用戶對數據庫的訪問 1594.4.12 什么是數據庫的單用戶模式 1604.4.13 如何選擇數據庫的故障還原模型(恢復模型) 1604.4.14 選項設置參數有什么含義 1614.4.15 什么是數據庫的兼容性 1624.4.16 如何設置用戶訪問數據庫的權限 1624.5 分離和附加用戶數據庫 1634.5.1 如何分離數據庫 1634.5.2 如何附加數據庫 1634.6 脫機和聯機用戶數據庫 1644.6.1 如何脫機數據庫 1644.6.2 如何聯機數據庫 1654.7 維護用戶數據庫 1654.7.1 什么是數據庫的維護計劃 1654.7.2 創(chuàng)建數據庫維護計劃 1654.8 收縮用戶數據庫 1684.8.1 為什么要收縮數據庫 1684.8.2 什么是自動收縮和手動收縮 1694.8.3 收縮數據文件和日志文件有什么不同 1694.8.4 收縮操作是如何執(zhí)行的 1694.8.5 收縮數據庫的案例 1694.9 刪除用戶數據庫 1704.10 實驗:tempdb數據庫的數據存放在內存還是硬盤上 1714.11 實驗:數據文件組的比例填充寫機制 1734.11.1 測試比例填充寫機制的方法 1734.11.2 研究數據頁面分配方法 1744.12 實驗:日志文件的循環(huán)寫機制 1764.13 疑難解析 1764.13.1 文件必須按照指定的擴展名命名嗎 1764.13.2 能不能重新命名數據庫 1774.13.3 如何刪除數據文件 1774.13.4 如何刪除日志文件 1784.13.5 為什么分區(qū)上無法創(chuàng)建文件 1784.13.6 如何查看數據庫空間使用情況 1784.13.7 如何使用tempdb數據庫 1784.13.8 為什么恢復Master數據庫提示必須單用戶模式 1794.13.9 Tempdb數據庫可以恢復嗎 1794.13.10 如何在Tempdb數據庫中創(chuàng)建臨時表 1794.13.11 在企業(yè)管理器中看不到Tempdb數據庫的臨時表 1794.13.12 為什么對Tempdb數據庫的操作執(zhí)行較快 1804.13.13 如何更改Tempdb數據庫文件的存儲路徑 1804.14 本章小結 1814.15 實踐題目 181第5章 DBCC命令 1825.1 本章導讀 1825.2 DBCC幫助類命令 1835.2.1 DBCC HELP (‘?‘) 1835.2.2 DBCC HELP (‘命令‘) 1835.2.3 DBCC USEROPTIONS 1835.3 DBCC狀態(tài)驗證類命令 1835.3.1 DBCC CHECKALLOC 1835.3.2 DBCC CHECKCATALOG 1845.3.3 DBCC CHECKCONSTRINTS 1855.3.4 DBCC CHECKDB 1855.3.5 DBCC CHECKFILEGROUP 1865.3.6 DBCC CHECKTABLE 1875.3.7 DBCC CHECKIDENT 1885.4 DBCC維護類命令 1885.4.1 DBCC CLEANTABLE 1885.4.2 DBCC DBREINDEX 1895.4.3 DBCC UPDATEUSAGE 1905.4.4 DBCC INDEXDEFRAG 1915.4.5 DBCC PINTABLE 1925.4.6 DBCC UNPINTABLE 1935.4.7 DBCC SHRINKDATABASE 1935.4.8 DBCC SHRINKFILE 1955.5 DBCC性能調節(jié)類命令 1975.5.1 DBCC dllname(FREE) 1975.5.2 DBCC DROPCLEANBUFFERS 1975.5.3 DBCC FREEPROCCACHE 1985.5.4 DBCC INPUTBUFFER 1985.5.5 DBCC OPENTRAN 1995.5.6 DBCC OUTPUTBUFFER 1995.5.7 DBCC SHOW_STATISTICS 2005.5.8 DBCC SHOWCONTIG 2005.5.9 DBCC SQLPERF 2015.5.10 DBCC CACHESTATS 2045.5.11 DBCC CURSORSTATS 2055.5.12 DBCC MEMORYSTATS 2055.5.13 DBCC SQLMGRSTATS 2065.6 DBCC未公開的命令 2065.6.1 DBCC ERRLOG 2065.6.2 DBCC FLUSHPROCINDB 2075.6.3 DBCC BUFFER 2075.6.4 DBCC DBINFO 2075.6.5 DBCC DBTABLE 2085.6.6 DBCC IND 2085.6.7 DBCC LOG 2085.6.8 DBCC PROCBUF 2095.6.9 DBCC PRTIPAGE 2105.6.10 DBCC PSS 2105.6.11 DBCC RESOURCE 2115.6.12 DBCC TAB 2115.7 DBCC跟蹤標記 2125.7.1 什么是跟蹤標記 2125.7.2 DBCC TRACEON 2125.7.3 DBCC TRACEOFF 2125.7.4 DBCC TRACESTATUS 212第6章 數據三套車:表、索引和視圖 2136.1 本章導讀 2136.2 數據類型:SQL Server 2000如何表示數據 2136.2.1 SQL Server 2000的基本數據類型 2136.2.2 使用整數型數據類型需要注意什么 2146.2.3 使用貨幣數據類型需要注意什么 2156.2.4 如何錄入貨幣數據類型的數據 2156.2.5 使用精確數字數據類型需要注意什么 2156.2.6 使用浮點數字數據類型需要注意什么 2166.2.7 使用日期/時間數字數據類型需要注意什么 2166.2.8 如何指定日期/時間數據類型的格式 2166.2.9 使用字符型數據類型時需要注意什么 2176.2.10 使用Unicode字符型數據類型時需要注意什么 2176.2.11 使用二進制數據類型時需要注意什么 2176.2.12 如何創(chuàng)建用戶定義的數據類型 2186.3 表 2196.3.1 SQL Server 2000表的分類 2196.3.2 如何設計表 2196.3.3 設計表結構時為什么要避免NULL值 2206.3.4 如何選擇主碼列 2206.3.5 什么是IDENTITY(標識符)列 2206.3.6 什么是GUID(全局惟一標識符)列 2216.3.7 創(chuàng)建表 2216.3.8 修改表結構 2236.3.9 刪除表 2256.3.10 SQL Server 2000如何管理表 2256.3.11 表的數據存儲在哪個數據頁面 2286.3.12 文本和圖像數據是如何存儲的 2296.3.13 如何計算表需要的存儲空間 2316.4 索引 2326.4.1 表掃描還是索引掃描:SQL Server 2000如何訪問數據 2326.4.2 索引對數據庫是不是必須的 2326.4.3 索引的原理 2336.4.4 從堆到B+樹:索引文件結構的變遷 2336.4.5 SQL Server 2000的索引類型 2346.4.6 時間VS.空間:選擇稠密索引還是稀疏索引 2356.4.7 探究聚集索引的奧秘 2366.4.8 行定位器:探究非聚集索引的奧秘 2436.4.9 IAM頁面:探究堆集的奧秘 2446.4.10 什么是頁的分裂 2456.4.11 索引填充因子:避免頁分裂的重要參數 2466.4.12 如何估計B+樹索引的大小 2466.4.13 如何查看索引的實際大小 2476.4.14 在【企業(yè)管理器】中如何創(chuàng)建索引 2496.4.15 用Transact-SQL語句如何創(chuàng)建索引 2506.4.16 DBCC IND:如何查看索引分配的頁面 2516.4.17 DBCC SHOWCONTIG:如何檢測索引的碎片 2526.4.18 DBCC INDEXDEFRAG:如何整理索引的碎片 2546.4.19 選擇性和密度:選擇索引的奧秘 2556.4.20 統(tǒng)計信息:影響索引性能的因素 2566.4.21 用索引優(yōu)化向導設計索引 2576.4.22 不是每個索引都有美好結局:總結創(chuàng)建索引的經驗 2596.5 視圖 2606.5.1 視圖是什么 2606.5.2 為什么要使用視圖 2606.5.3 SQL Server 2000中創(chuàng)建視圖的規(guī)則 2616.5.4 創(chuàng)建視圖 2616.5.5 通過視圖操作表的數據 2626.6 疑難解析 2636.6.1 為什么非聚集索引適合返回少數值的查詢 2636.6.2 為什么聚集索引適合范圍查詢 2646.6.3 SQL Server 2000中表的規(guī)格參數 2646.6.4 索引是否只對SELECT語句起作用 2646.6.5 視圖上能不能建立索引 2656.6.6 如何創(chuàng)建覆蓋索引 2656.6.7 什么是數據熱點 2656.6.8 創(chuàng)建的聚集索引如何避免產生數據熱點 2656.6.9 如何選擇建立聚集索引的列 2666.6.10 如何設計聚集索引和非聚集索引 2666.6.11 如何設計索引的填充因子 2666.6.12 什么是表變量 2676.6.13 表變量VS.臨時表 2676.6.14 視圖到底有沒有自己的數據 2686.7 本章小結 2686.8 實踐題目 268第7章 功能VS.效率:SQL詳解 2707.1 本章導讀 2707.2 SQL基礎 2707.2.1 SQL的特點 2707.2.2 SQL的組成 2727.2.3 SQL中如何表示數據對象 2737.3 用SQL定義數據 2737.3.1 Create Database:創(chuàng)建數據庫 2747.3.2 Alter Database:修改數據庫 2747.3.3 Drop Database:刪除數據庫 2757.3.4 Create Table:創(chuàng)建表 2757.3.5 Alter Table:修改表 2777.3.6 Drop Table:刪除表 2777.4 用SQL查詢單表數據 2777.4.1 創(chuàng)建實例數據庫 2777.4.2 查詢所有記錄 2807.4.3 查詢指定字段的記錄 2807.4.4 查詢中過濾相同的記錄 2817.4.5 帶表達式的查詢 2817.4.6 顯示列名的帶表達式的查詢 2817.4.7 指定查詢路徑的查詢 2817.4.8 指定查詢結果的查詢 2817.4.9 更改列標題顯示的查詢 2827.4.10 【Where】條件查詢 2827.4.11 組合條件查詢 2847.4.12 用Order By對查詢結果排序 2847.4.13 用Group By對查詢結果分組 2857.4.14 用Having對查詢結果篩選 2857.4.15 用Compute對查詢結果匯總 2867.4.16 用Compute By對查詢結果分類匯總 2867.4.17 用Into存儲查詢結果 2877.5 用SQL查詢多表數據(連接查詢) 2877.5.1 連接查詢的語法結構 2877.5.2 連接查詢的分類 2887.5.3 笛卡爾積連接 2887.5.4 等值連接 2887.5.5 自然連接 2897.5.6 非等值連接 2897.5.7 自身連接 2897.5.8 內連接 2897.5.9 外連接 2907.5.10 復合連接 2917.6 用SQL進行函數查詢 2927.6.1 聚合函數 2927.6.2 日期和時間函數 2937.6.3 數學函數 2967.6.4 字符串函數 2987.7 用SQL進行嵌套查詢 3017.7.1 什么是嵌套查詢 3017.7.2 什么是子查詢 3017.7.3 簡單嵌套查詢 3027.7.4 帶in的嵌套查詢 3027.7.5 帶not in的嵌套查詢 3037.7.6 帶some的嵌套查詢 3037.7.7 帶any的嵌套查詢 3047.7.8 帶all的嵌套查詢 3057.7.9 帶exists的嵌套查詢 3057.8 用SQL操縱數據 3067.8.1 Insert:數據錄入 3067.8.2 Update:數據修改 3067.8.3 Delete:數據刪除 3077.9 設計高效的SQL語句 3077.9.1 SQL語句是怎樣被執(zhí)行的 3077.9.2 SQL語句是怎樣被優(yōu)化的 3087.9.3 SET STATISTICS IO:查詢SQL語句的讀寫代價 3087.9.4 SET STATISTICS TIME:查詢SQL語句的執(zhí)行時間 3107.9.5 SET SHOWPLAN_TEXT ON :查詢SQL語句的執(zhí)行計劃 3117.9.6 SET NOCOUNT ON:減少SQL語句的網絡流量 3117.9.7 編程查詢單條SQL語句的執(zhí)行時間 3127.9.8 編程查詢成批的SQL語句的執(zhí)行時間 3137.9.9 SET SHOWPLAN_ALL:詳解SQL語句的執(zhí)行計劃 3137.9.10 SEEK VS.SCAN:從執(zhí)行計劃判斷是否需要優(yōu)化SQL 3157.9.11 連接VS.子查詢:一樣的結果、不一樣的效率 3167.9.12 SQL優(yōu)化與數據庫性能的關系 3177.9.13 人工優(yōu)化VS.智能優(yōu)化:SQL優(yōu)化技術的發(fā)展 3187.9.14 用SQL Expert設計優(yōu)化的SQL語句 3187.10 疑難解析 3217.10.1 在SQL語句中如何轉換數據類型 3217.10.2 設計SQL語句的經驗 3217.11 本章小結 3227.12 實踐題目 322第8章 數據完整性:約束、規(guī)則和默認 3238.1 本章導讀 3238.2 SQL Server 2000的數據完整性機制 3238.2.1 什么是數據完整性 3238.2.2 SQL Server 2000的數據完整性機制 3248.2.3 SQL Server 2000的約束(CONSTRAINT) 3248.2.4 SQL Server 2000的規(guī)則(RULE) 3258.2.5 SQL Server 2000的默認(DEFAULT) 3258.3 創(chuàng)建約束 3268.3.1 創(chuàng)建NOT NULL約束 3268.3.2 創(chuàng)建PRIMARY KEY約束 3268.3.3 創(chuàng)建FOREIGN KEY約束 3278.3.4 創(chuàng)建UNIQUE約束 3288.3.5 創(chuàng)建CHECK約束 3288.4 創(chuàng)建規(guī)則 3298.4.1 在【企業(yè)管理器】中創(chuàng)建規(guī)則 3298.4.2 將規(guī)則綁定到列 3298.5 創(chuàng)建默認 3308.5.1 在【企業(yè)管理器】中創(chuàng)建默認 3308.5.2 將默認綁定到列 3318.6 疑難解析 3318.6.1 創(chuàng)建UNIQUE約束的注意事項 3318.6.2 創(chuàng)建CHECK約束的注意事項 3328.7 本章小結 3328.8 實踐題目 332第9章 數據安全性:角色、用戶和權限 3349.1 本章導讀 3349.2 SQL Server 2000的數據安全性機制 3349.2.1 SQL Server 2000的數據安全性機制 3349.2.2 SQL Server 2000的身份驗證機制 3359.2.3 SQL Server 2000的角色機制 3369.2.4 SQL Server 2000的權限(許可)機制 3379.3 管理服務器角色 3389.3.1 管理角色 3389.3.2 創(chuàng)建數據庫角色 3399.4 管理用戶賬戶(登錄) 3419.4.1 創(chuàng)建登錄 3419.4.2 管理登錄的權限 3429.5 審核用戶活動(AUDIT) 3429.5.1 啟動服務器的審核功能 3439.5.2 利用【事件探查器】進行審核 3439.6 疑難解析 3469.6.1 賬戶和密碼保存在哪里 3469.6.2 如何選擇身份驗證機制 3469.6.3 應用程序角色和標準角色有什么區(qū)別 3469.6.4 什么時機使用應用程序角色 3479.6.5 為什么【企業(yè)管理器】中無法添加Windows用戶組 3479.6.6 如何設計SQL Server 2000服務器的安全體系 3479.6.7 如何使用sa賬戶 3479.6.8 什么是dbo用戶 3479.6.9 什么是數據庫對象所有者 3489.7 本章小結 348第10章 數據并發(fā)性:事務和鎖 34910.1 本章導讀 34910.2 SQL Server 2000的事務機制 34910.2.1 SQL Server 2000的并發(fā)問題 34910.2.2 什么是事務(Transaction) 35110.2.3 事務的狀態(tài) 35210.2.4 SQL Server 2000事務模式 35310.2.5 SQL Server 2000事務控制語句 35410.2.6 SQL Server 2000的平面事務 35410.2.7 SQL Server 2000的嵌套事務 35410.2.8 SQL Server 2000的分布式事務 35610.2.9 效率VS.一致性:事務的調度機制 35810.2.10 一致性VS.并發(fā)性:事務的隔離性級別 35810.2.11 什么是SQL Server 2000批 35910.2.12 事務中不能使用的Transact-SQL語句 35910.3 SQL Server 2000的鎖機制 35910.3.1 并發(fā)問題解決機制 35910.3.2 鎖:預先預防沖突的悲觀并發(fā)控制機制 36010.3.3 SQL Server 2000鎖的粒度 36110.3.4 SQL Server 2000鎖的類型(模式) 36110.3.5 鎖持有度 36310.3.6 鎖擁有者 36310.3.7 查詢鎖信息 36310.3.8 鎖的兼容性 36510.3.9 SQL Server 2000的動態(tài)鎖機制 36510.3.10 在【企業(yè)管理器】中查看鎖 36610.3.11 死鎖的檢測和預防 36610.3.12 SQL Server 2000的死鎖檢測和結束機制 36710.3.13 用【事件探查器】檢測死鎖 36810.4 SQL Server 2000的事務編程 36810.4.1 設置和關閉隱性事務模式 36810.4.2 定義本地事務 37010.4.3 提交事務 37110.4.4 回滾事務 37210.4.5 利用保存點保存本地事務 37310.4.6 設置事務的隔離性級別 37310.5 疑難解析 37410.5.1 本地事務什么時機會升級為分布式事務 37410.5.2 編寫前臺應用程序時如何使用事務 37410.5.3 在利用ADO編寫前臺應用程序時如何使用事務 37510.5.4 編寫前臺應用程序時如何使用隱性事務 37510.5.5 編寫前臺應用程序事務的原則 37610.5.6 Log Explorer:明明白白學日志的工具 37710.5.7 Select語句會不會產生日志 37910.5.8 Insert語句產生了什么事務日志 37910.5.9 Update語句產生了什么事務日志 38010.5.10 Delete語句產生了什么事務 38110.6 本章小結 381第11章 數據庫備份和恢復 38311.1 本章導讀 38311.2 基于日志的數據庫恢復機制 38411.2.1 日志對數據庫是必須的嗎 38411.2.2 日志的作用 38411.2.3 SQL Server 2000日志的特點 38511.2.4 日志記錄:日志文件的內容單位 38511.2.5 UndoVS.Redo:基于日志的數據庫恢復機制 38511.2.6 LSN:維系數據和日志的紐帶 38611.2.7 WAL:先寫日志的恢復機制 38811.3 SQL Server 2000的常見故障和恢復機制 39011.3.1 Undo:事務故障及其恢復機制 39011.3.2 Undo+Redo:系統(tǒng)故障及其恢復機制 39111.3.3 Redo:介質故障及其恢復機制 39111.4 SQL Server 2000的日志檢查點機制 39211.4.1 檢查點:日志的驛站 39211.4.2 為什么檢查點能提高恢復的效率 39311.4.3 MinLSN:如何選擇最小恢復LSN 39411.4.4 什么情況下產生檢查點 39411.4.5 SQL Server 2000的自動檢查點機制 39511.4.6 CHECKPOINT:手動產生檢查點 39511.5 安全VS.空間:SQL Server 2000數據庫的恢復模型 39611.5.1 完全恢復模型 39611.5.2 大容量日志記錄恢復模型 39711.5.3 簡單恢復模型 39711.5.4 3種恢復模型的比較 39711.5.5 設置SQL Server 2000數據庫的恢復模型 39811.5.6 不同恢復模型下的檢查點操作 39811.6 SQL Server 2000的備份機制 40011.6.1 SQL Server 2000的備份類型 40011.6.2 不同的恢復模型支持的備份類型 40111.6.3 SQL Server 2000的備份設備 40111.6.4 用SP_SPACEUSED估計備份的大小 40311.7 用【企業(yè)管理器】備份與恢復 40411.7.1 完全數據庫備份 40411.7.2 完全數據庫恢復 40511.7.3 事務日志備份 40611.7.4 事務日志恢復 40711.7.5 差異數據庫備份 40811.7.6 差異數據庫恢復 40911.7.7 文件和文件組備份 41011.7.8 文件和文件組恢復 41111.8 用Transact-SQL備份與恢復 41211.8.1 用于數據庫備份的Transact-SQL語句 41211.8.2 用于文件或文件組備份的Transact-SQL語句 41411.8.3 用于日志備份的Transact-SQL語句 41511.8.4 截斷事務日志Transact-SQL語句 41611.8.5 恢復完全數據庫備份的Transact-SQL語句 41611.8.6 恢復事務日志備份的Transact-SQL語句 41711.9 設計和實施一個完整的數據庫備份與恢復方案 41811.9.1 技術VS.代價:如何制定備份與恢復方案 41811.9.2 選擇SQL Server 2000數據庫的恢復模型 42011.9.3 適合絕大部分數據庫的兩種備份與恢復方案 42111.9.4 剖析一個完整的數據庫備份與恢復方案 42111.9.5 實施一個完整的數據庫備份方案 42211.9.6 實施災難數據庫恢復方案 42511.10 疑難解析 42611.10.1 僅有.BAK文件時如何恢復 42611.10.2 為什么無法進行事務日志備份和文件備份 42711.10.3 為什么無法創(chuàng)建差異數據庫備份 42711.10.4 備份或者恢復過程發(fā)生中斷如何處理 42811.10.5 什么時機需要備份Master數據庫 42911.10.6 需不需要備份tempdb數據庫 42911.10.7 當前日志和備份日志有什么關系 42911.10.8 僅有數據文件、沒有日志文件時如何恢復 42911.10.9 DBCC LOGINFO查看VLF 43111.11 本章小結 43211.12 實踐題目 432第12章 智能管理:代理服務 43412.1 本章導讀 43412.2 SQL Server 2000的代理服務機制 43412.2.1 SQL Server 2000代理服務的結構 43412.2.2 SQL Server 2000代理服務的運行環(huán)境 43512.2.3 配置SQL Server 2000代理服務的屬性 43512.3 一個基于代理服務實現的智能作業(yè) 43712.3.1 創(chuàng)建警報 43712.3.2 創(chuàng)建操作員 43812.3.3 創(chuàng)建作業(yè) 43912.4 本章小結 44112.5 實踐題目 442第13章 服務器性能監(jiān)控、調整和優(yōu)化 44313.1 本章導讀 44313.2 可能導致性能瓶頸的因素 44413.2.1 服務器資源 44413.2.2 網絡 44413.2.3 數據庫設計 44413.2.4 應用系統(tǒng)設計 44413.3 服務器性能監(jiān)控和調整工具 44513.3.1 Windows的【性能監(jiān)控器】 44513.3.2 Windows的【任務管理器】 44613.3.3 SQL Server 2000的【事件探查器】 44713.3.4 SQL Server 2000的【查詢分析器】 44913.3.5 特殊的系統(tǒng)存儲過程 44913.3.6 特殊的DBCC命令 44913.3.7 特殊的全局變量 45013.3.8 SQL Server 2000的【索引調節(jié)向導】 45313.4 監(jiān)控和調整I/O性能 45313.4.1 磁盤I/O對服務器性能的影響 45313.4.2 監(jiān)控磁盤I/O性能的計數器 45313.4.3 磁盤I/O是否是性能瓶頸 45413.4.4 可能導致磁盤I/O性能瓶頸的原因 45413.4.5 順序I/O VS.隨機I/O:SQL Server 2000的I/O類型 45513.4.6 調整I/O性能的方法 45513.5 監(jiān)控和調整內存性能 45613.5.1 物理內存VS.虛擬內存 45613.5.2 內存頁面錯誤:內存性能低下的原因 45613.5.3 監(jiān)控內存性能的計數器 45713.5.4 內存是不是性能瓶頸 45713.5.5 調整內存性能的方法 45813.6 監(jiān)控和調整CPU性能 45813.6.1 進程VS.線程VS.纖程:分配CPU資源的單位 45813.6.2 用戶模式VS.特權模式 45913.6.3 監(jiān)控CPU性能的計數器 45913.6.4 CPU是不是性能的瓶頸 45913.6.5 監(jiān)控消耗CPU資源進程的計數器 46013.6.6 監(jiān)控消耗CPU資源線程的計數器 46013.6.7 監(jiān)控進程和線程的意義 46013.6.8 更多CPU VS.更快的CPU 46113.7 監(jiān)控和調整網絡性能 46113.7.1 監(jiān)控網絡性能的計數器 46113.7.2 調整網絡性能的方法 46113.8 調整和優(yōu)化數據庫設計 46213.8.1 監(jiān)控數據庫性能的計數器 46213.8.2 優(yōu)化數據庫設計的方法 46413.9 調整和優(yōu)化應用系統(tǒng)設計 46413.9.1 監(jiān)控應用系統(tǒng)性能的計數器 46413.9.2 優(yōu)化應用系統(tǒng)設計的方法 46513.10 設計和實現一個優(yōu)化的SQL Server 2000服務器 46513.10.1 數據和日志文件分開存放在不同磁盤上 46513.10.2 tempdb數據庫單獨存放在不同磁盤上 46513.10.3 避免熱點數據的發(fā)生 46613.10.4 數據類型要少 46613.10.5 監(jiān)控和整理空間碎片 46613.10.6 使用主數據文件和次要數據文件 46613.10.7 利用文件組改善性能 46613.10.8 重視自動增長和自動收縮可能導致的性能問題 46713.10.9 分離系統(tǒng)數據和用戶數據 46713.10.10 優(yōu)化索引設計 46713.10.11 定期更新統(tǒng)計信息 46713.10.12 定期的一致性檢查 46713.11 疑難解析 46713.11.1 整數VS.浮點運算能力:配置SQL Server 2000系統(tǒng)的CPU 46713.11.2 查詢密集VS.事務密集:配置SQL Server 2000系統(tǒng)的內存 46813.11.3 容量VS.吞吐量:配置SQL Server 2000系統(tǒng)的硬盤 46813.12 本章小結 468第14章 SQL Server 2000高級管理專題 47014.1 本章導讀 47014.2 數據轉換服務DTS 47014.2.1 什么是DTS服務 47014.2.2 使用DTS向導轉換數據 47114.2.3 創(chuàng)建DTS包 47414.2.4 DTS包調度執(zhí)行失敗原因及解決方法 47714.3 全文索引 47814.3.1 基表查詢VS.全文查詢 47814.3.2 什么是全文目錄 47914.3.3 什么是全文索引 47914.3.4 啟用全文檢索服務 47914.3.5 定義全文索引 48014.3.6 利用全文索引檢索數據 48214.4 分布式數據復制 48414.4.1 備份VS.復制 48414.4.2 分布式數據復制的優(yōu)點 48414.4.3 什么時機需要使用分布式數據復制 48514.4.4 SQL Server 2000分布式數據復制的機制 48514.4.5 拉訂閱(請求訂閱)VS.推訂閱(強制訂閱) 48514.4.6 SQL Server 2000的分布式數據復制類型 48614.4.7 SQL Server 2000的分布式數據復制代理 48714.4.8 配置發(fā)布、訂閱和分發(fā)服務器 48814.4.9 使用【復制監(jiān)視器】 49114.4.10 創(chuàng)建及管理發(fā)布 49214.4.11 創(chuàng)建訂閱 49514.5 本章小結 499第15章 專業(yè)的SQL Server 2000管理工具 50015.1 本章導讀 50015.2 Quest Central 50115.2.1 Quest Central簡介 50115.2.2 Quest Central for SQL Server簡介 50115.2.3 注冊SQL Server 2000服務器 50215.2.4 自動發(fā)現未注冊的SQL Server 2000服務器 50315.2.5 比較兩個SQL Server 2000對象 50415.2.6 Knowledge Xpert:SQL Server 2000知識寶典 50515.2.7 SQL Tuning:設計優(yōu)化的SQL語句 50615.2.8 Space Management:可視化的空間管理工具 50715.2.9 Database Analysis:專業(yè)數據庫性能分析工具 50815.2.10 Performance Analysis:實時診斷和歷史分析工具 50815.3 Spotlight 50915.3.1 Spotlight簡介 50915.3.2 用Spotlight監(jiān)控服務器總體性能 50915.3.3 用Spotlight監(jiān)控I/O 51015.3.4 用Spotlight監(jiān)控Sessions 51115.3.5 用Spotlight監(jiān)控Lock 51115.3.6 用Spotlight監(jiān)控有無資源阻塞 51215.3.7 用Spotlight監(jiān)控物理文件的I/O 51215.3.8 用Spotlight監(jiān)控內存總體性能 51315.3.9 用Spotlight監(jiān)控數據庫空間使用情況 51315.4 Data Factory 51415.4.1 Data Factory簡介 51415.4.2 利用Data Factory產生數據 51415.5 Benchmark Factory 51615.5.1 Benchmarka Factory簡介 51615.5.2 數據庫壓力測試工業(yè)標準 51715.5.3 用Benchmark Factory測試數據庫壓力 51715.6 本章小結 520 第二部分Transact-SQL編程 第16章 Transact-SQL編程 52316.1 本章導讀 52316.2 Transact-SQL VS. SQL 52316.2.1 什么是Transact-SQL 52316.2.2 Transact-SQL VS. SQL 52416.2.3 Transact-SQL程序的結構 52416.2.4 Transact-SQL程序的數據類型 52516.2.5 Transact-SQL程序的批處理 52516.2.6 應用程序中如何使用Transact-SQL程序 52616.2.7 Transact-SQL程序的運算符 52616.3 變量 52716.3.1 Transact-SQL的變量類型 52716.3.2 Transact-SQL的全局變量 52816.3.3 創(chuàng)建和使用局部變量 52916.4 函數 53016.4.1 Convert函數 53016.4.2 創(chuàng)建和使用自定義函數 53116.5 流程控制語句 53316.5.1 程序塊語句(BEGIN…END) 53316.5.2 判斷語句(IF…ELSE) 53416.5.3 檢測語句(IF…EXISTS) 53616.5.4 循環(huán)語句(WHILE) 53616.5.5 分支判斷語句(CASE…WHEN) 53716.5.6 無條件退出語句(RETURN) 53816.5.7 延期執(zhí)行語句(WAITFOR) 54016.5.8 跳轉語句(GOTO) 54116.6 功能性語句 54216.6.1 輸出語句(PRINT) 54216.6.2 錯誤處理語句(RAISEERROR) 54316.6.3 選項設置語句(SET) 54416.7 游標(Cursor) 54516.7.1 什么是游標 54516.7.2 游標的生命周期 54516.7.3 聲明游標 54616.7.4 打開游標 54716.7.5 讀取游標 54716.7.6 關閉游標 54816.7.7 釋放游標 54816.7.8 完整的游標實例 54816.7.9 游標的執(zhí)行效率很差嗎 54916.8 本章小結 550第17章 存儲過程和觸發(fā)器 55117.1 本章導讀 55117.2 存儲過程基礎 55117.2.1 為什么要設計存儲過程 55117.2.2 什么是存儲過程 55217.2.3 存儲過程的作用 55217.2.4 存儲過程有什么優(yōu)點 55217.2.5 SQL Server 2000存儲過程的分類 55317.3 創(chuàng)建、執(zhí)行和管理存儲過程 55317.3.1 在【企業(yè)管理器】中創(chuàng)建存儲過程 55317.3.2 創(chuàng)建存儲過程的Transact-SQL語法 55617.3.3 執(zhí)行存儲過程 55717.3.4 創(chuàng)建帶參數和返回值的存儲過程 55917.3.5 執(zhí)行帶參數和返回值的存儲過程 56017.3.6 刪除存儲過程 56017.3.7 執(zhí)行帶參數的存儲過程的等效語句 56017.4 觸發(fā)器基礎 56117.4.1 什么是觸發(fā)器 56117.4.2 SQL Server 2000的觸發(fā)器類型 56117.4.3 SQL Server 2000的觸發(fā)器工作原理 56217.4.4 SQL Server 2000觸發(fā)器的優(yōu)點 56317.4.5 什么時機使用觸發(fā)器 56317.5 創(chuàng)建和管理觸發(fā)器 56317.5.1 創(chuàng)建觸發(fā)器的Transact-SQL語法 56317.5.2