內容介紹
《Microsoft程式設計系列·SQL Server2000技術內幕》是由著名作家與產品開發小組成員共同編寫的,對於那些需要了解SQL Server內部結構如何影回響用程式的開發和功能的讀者來說,這都是一本必備和必讀之書。
通過學習《Microsoft程式設計系列·SQL Server2000技術內幕》對SQL Server 2000引擎的正式指導,您可以掌握目前首選的關係資料庫管理系統(RDBMS)的內部工作方式。
本書目錄
前言
第一部分 概述
第一章 Microsoft SQL Server的演變過程:從1989年到2000年
1.1 SQL Server:初期階段
1.2 Ron的故事
1.3 Kalen的故事
1.4 Microsoft SQL Server的發布
1.5 開發角色的演變
1.6 OS/2和友好的攻擊
1.7 SQL Server 4.2
1.7.1 即將發布的OS/2 2.0
1.7.2 4.2版本的發布
1.8 用於Windows NT的SQL Server
1.9 成功帶來的巨大變化
1.10 合作開發的結束
1.11 管理SQL95
1.12 下一版本
1.13 Sphinx的秘密
1.14 新世紀的軟體
第二章 介紹SQL Server
2.1 SQL Server引擎
2.1.1 Transact-SQL
2.2 DBMS強制的數據完整性
2.2.1 聲明數據完整性
2.2.2 數據類型
2.2.3 CHECK約束和規則
2.2.4 默認值
2.2.5 觸發器
2.3 事務處理
2.3.1 原子性
2.3.2 一致性
2.3.3 孤立性
2.3.4 持久性
2.4 對稱伺服器構架
2.4.1 傳統的進程/執行緒模式
2.4.2 SQL Server的進程/執行緒模式
2.4.3 多用戶性能
2.5 安全性
2.5.1 監視和管理安全性
2.6 較高的可用性
2.7 分散式數據處理
2.8 數據複製
2.9 系統管理
2.9.1 SQL Server Enterprise Manager
2.9.2 Distributed Management Objects
2.9.3 Windows Management Instrumentation
2.9.4 SQL-DMO和Visual Basic腳本
2.9.5 SQL Server Agent
2.10 SQL Server的實用程式和擴展
2.10.1 Web Assistant Wizard和Internet啟用
2.10.2 SQL Profiler
2.10.3 SQL Server Service Manager
2.10.4 System Monitor的集成
2.10.5 Client Network實用程式
2.10.6 Server Network實用程式
2.10.7 SQL Server的安裝
2.10.8 OSQL和ISQL
2.10.9 SQL Query Analyzer
2.10.10 大量複製和數據傳輸服務
2.10.11 SNMP集成
2.10.12 SQL Server Books Online
2.11 客戶開發接口
2.11.1 ODBC
2.11.2 OLE DB
2.11.3 ADO
2.11.4 DB-Library
2.11.5 ESQL/C
2.11.6 伺服器開發接口
2.12 總結
第二部分 基本結構概述
第三章 SQL Server的基本結構
3.1 SQL Server引擎
3.1.1 Net-Library
3.1.2 開放式數據服務
3.1.3 關係引擎和存儲引擎
3.1.4 訪問方法管理器
3.1.5 行操作管理器和索引管理器
3.1.6 頁面管理器和文本管理器
3.1.7 事務管理器
3.1.8 鎖管理器
3.1.9 其他管理器
3.2 管理記憶體
3.2.1 緩衝區管理器和記憶體池
3.2.2 訪問記憶體內頁面
3.2.3 訪問自由頁(惰性編寫器)
3.2.4 檢查點
3.2.5 使用緩衝區管理器訪問頁面
3.2.6 大量記憶體問題
3.2.7 日誌管理器
3.3 事務的記錄和恢復
3.3.1 鎖定和恢復
3.3.2 頁面LSN和恢復
3.4 SQL Server核心和與作業系統的互動
3.4.1 執行緒化和對稱多處理技術
3.4.2 輔助執行緒池
3.4.3 Windows NT/2000中的磁碟I/O
3.5 總結
第三部分 使用Microsoft SQL Server
第四章 規劃和安裝SQL Server
4.1 SQL Server的版本
4.1.1 嵌入的SQL Server
4.2 硬體指導原則
4.2.1 使用“Windows硬體兼容列表”中的硬體
4.2.2 性能=Fn(處理器周期,記憶體,I/O傳輸量)
4.2.3 在基準程式上的投資
4.3 硬體組件
4.3.1 處理器
4.3.2 記憶體
4.3.3 磁碟驅動器、控制器和磁碟陣列
4.3.4 RAID解決方案
4.3.5 有關驅動器和控制器的更多信息
4.3.6 不間斷電源(UPS)
4.3.7 磁碟子系統
4.3.8 後備伺服器的能力
4.3.9 其他硬體的考慮因素
4.4 作業系統
4.5 檔案系統
4.6 安全性和用戶環境
4.7 許可
4.7.1 SQL Server的Processor License
4.7.2 Server License和CAL
4.7.3 多元化:中間件、事務伺服器和多層結構的使用
4.7.4 多實例
4.8 網路協定
4.9 排序規則
4.9.1 字元集
4.9.2 排序順序
4.10 多個實例
4.10.1 安裝命名實例
4.10.2 命名實例的伺服器連線
4.11 安裝SQL Server
4.11.1 從以前的版本進行升級安裝
4.12 安裝後的基本配置
4.12.1 啟動SQL Server服務
4.12.2 更改系統管理員的密碼
4.12.3 配置SQL Server的錯誤日誌
4.12.4 使用多實例
4.13 遠程安裝和無人參與安裝
4.13.1 遠程安裝
4.13.2 無人參與安裝
4.13.3 更改安裝選項
4.13.4 添加其他組件
4.14 總結
第五章 資料庫資料庫檔案
5.1 特殊的系統資料庫
5.1.1 master
5.1.2 model
5.1.3 tempdb
5.1.4 pubs
5.1.5 Northwind
5.1.6 msdb
5.2 資料庫檔案
5.3 創建資料庫
5.3.1 CREATE DATABASE示例
5.4 擴大和收縮資料庫
5.4.1 自動的檔案擴大
5.4.2 人工的檔案擴大
5.4.3 自動的檔案收縮
5.4.4 人工的檔案收縮
5.5 日誌大小方面的變化
5.5.1 日誌截斷
5.6 使用資料庫檔案組
5.6.1 默認檔案組
5.6.2 FILEGROUP CREATION示例
5.7 修改資料庫
5.7.1 ALTER DATABASE示例
5.8 資料庫內幕
5.8.1 空間分配
5.9 設定資料庫選項
5.9.1 狀態選項
5.9.2 游標選項
5.9.3 自動選項
5.9.4 SQL選項
5.9.5 恢複選項
5.10 資料庫的其他考慮因素
5.10.1 資料庫與方案
5.10.2 使用可移動媒介
5.10.3 分離和重新附加資料庫
5.10.4 兼容性級別
5.11 備份和恢複數據庫
5.11.1 備份的類型
5.11.2 恢復模式
5.11.3 選擇備份類型
5.11.4 恢複數據庫
5.12 總結
第六章 表
6.1 創建表
6.1.1 命名表和列
6.1.2 預留的關鍵字
6.1.3 分隔標識符
6.1.4 命名約定
6.1.5 數據類型
6.1.6 關於NULL的更多內容
6.2 用戶定義的數據類型
6.3 IDENTITY屬性
6.4 內部存儲
6.4.1 數據頁
6.4.2 介紹數據頁
6.4.3 數據行的結構
6.4.4 列偏移量數組
6.4.5 固定長度和可變長度行的存儲
6.4.6 頁面連結
6.4.7 文本和圖像數據
6.4.8 sql_variant數據類型
6.5 約束
6.5.1 PRIMARY KEY和UNIQUE約束
6.5.2 FOREIGN KEY約束
6.5.3 約束檢查的解決方法
6.5.4 對刪除表的限制
6.5.5 自引用表
6.5.6 CHECK約束
6.5.7 默認約束
6.5.8 有關約束的更多內容
6.6 修改表
6.6.1 更改數據類型
6.6.2 添加新列
6.6.3 添加、刪除、禁用或啟用約束
6.6.4 刪除列
6.6.5 啟用或禁用觸發器
6.7 臨時表
6.7.1 私有臨時表(#)
6.7.2 全局臨時表(##)
6.7.3 直接使用tempdb
6.7.4 臨時表中的約束
6.8 系統表
6.9 總結
第七章 查詢數據
7.1 SELECT語句
7.2 聯接
7.2.1 外部聯接
7.2.2 舊式的*=OUTER JOIN操作符
7.2.3 交叉聯接
7.3 處理NULL
7.3.1 現實生活中的NULL
7.3.2 IS NULL和=NULL
7.4 子查詢
7.4.1 相關子查詢
7.5 視圖和派生表
7.5.1 修改視圖
7.5.2 分區視圖
7.6 其他搜尋表達式
7.6.1 LIKE
7.6.2 BETWEEN
7.6.3 聚合函式
7.6.4 數據立方——聚合的變化形式
7.6.5 TOP
7.6.6 UNION
7.7 總結
第八章 索引
8.1 索引結構
8.1.1 群集索引
8.1.2 非群集索引
8.2 創建索引
8.2.1 約束和索引
8.3 索引頁的結構
8.3.1 具有唯一標識符的群集索引行
8.3.2 索引行的格式
8.4 索引空間的需求
8.4.1 B樹的大小
8.4.2 實際大小和估計大小
8.5 管理索引
8.5.1 碎片類型
8.5.2 檢測碎片
8.5.3 刪除碎片
8.6 特殊索引
8.6.1 前提條件
8.6.2 對計算得到的列的索引
8.6.3 索引視圖
8.7 使用索引
8.7.1 查找行
8.7.2 聯接
8.7.3 排序
8.7.4 分組
8.7.5 保持唯一性
8.8 總結
第九章 修改數據
9.1 基本的修改操作
9.1.1 INSERT
9.1.2 UPDATE
9.1.3 DELETE
9.1.4 通過視圖修改數據
9.2 數據修改內幕
9.2.1 插入行
9.2.2 拆分頁面
9.2.3 刪除行
9.2.4 更新行
9.2.5 表級數據修改和索引級數據修改
9.2.6 記錄
9.2.7 鎖定
9.3 總結
第十章 使用Transact-SQL編程
10.1 作為程式語言的Transact-SQL
10.1.1 多級編程
10.2 Transact-SQL編程結構
10.2.1 變數
10.2.2 控制流工具
10.2.3 CASE
10.2.4 PRINT
10.2.5 RAISERROR
10.2.6 FORMATMESSAGE
10.2.7 運算符
10.2.8 標量函式
10.2.9 表值函式
10.3 Transact-SQL示例和難題
10.3.1 生成測試數據
10.3.2 獲取等級
10.3.3 查找間隔之間的差別
10.3.4 代替重申的選擇
10.4 全文搜尋
10.4.1 全文索引
10.4.2 設定全文索引
10.4.3 維護全文索引
10.4.4 查詢全文索引
10.4.5 全文索引的性能考慮因素
10.5 總結
第十一章 批處理檔案、存儲過程和函式
11.1 批處理檔案
11.2 例程
11.3 存儲過程
11.3.1 嵌套的存儲過程
11.3.2 存儲過程中的遞歸
11.3.3 存儲過程的參數
11.4 用戶定義的函式
11.4.1 表變數
11.4.2 標量值函式
11.4.3 表值函式
11.4.4 系統表值函式
11.4.5 管理用戶定義的函式
11.5 將存儲過程改寫為函式
11.6 滾動您自己的系統例程
11.6.1 您自己的系統過程
11.6.2 您自己的系統函式
11.7 執行批處理檔案或存儲過程(和函式)
11.7.1 步驟1:解析命令並創建序列樹
11.7.2 步驟2:編譯批處理檔案
11.7.3 步驟3:執行
11.7.4 步驟4:重新編譯執行計畫
11.7.5 例程的存儲
11.7.6 加密例程
11.7.7 修改例程
11.8 臨時存儲過程
11.8.1 私有臨時存儲過程
11.8.2 全局臨時存儲過程
11.8.3 通過直接使用tempdb創建的過程
11.9 自動啟動存儲過程
11.10 系統存儲過程
11.10.1 常規系統過程
11.10.2 編目存儲過程
11.10.3 SQL Server Agent存儲過程
11.10.4 複製存儲過程
11.10.5 擴展存儲過程
11.11 EXECUTE(“ANY STRING”)
11.12 總結
第十二章 事務和觸發器
12.1 事務
12.1.1 明確事務和隱含事務
12.1.2 事務中的錯誤檢查
12.1.3 事務的孤立級別
12.1.4 事務的其他特性
12.1.5 嵌套的事務塊
12.1.6 保存點
12.2 觸發器
12.2.1 後觸發器
12.2.2 替代觸發器
12.2.3 管理觸發器
12.2.4 使用觸發器執行引用動作
12.2.5 遞歸觸發器
12.3 總結
第十三章 特殊的Transact-SQL操作:使用游標和大對象
13.1 游標的基礎知識
13.2 游標和ISAM
13.2.1 使用ISAM類型的應用程式的問題
13.3 游標模型
13.3.1 Transact-SQL游標
13.3.2 API伺服器游標
13.3.3 客戶游標
13.3.4 默認結果集
13.3.5 API伺服器游標和Transact-SQL游標
13.4 游標的適當使用
13.4.1 逐行操作
13.4.2 查詢操作
13.4.3 滾動應用程式
13.4.4 選擇游標
13.4.5 游標成員、滾動和更改敏感度
13.5 使用Transact-SQL游標
13.5.1 DECLARE
13.5.2 OPEN
13.5.3 FETCH
13.5.4 UPDATE
13.5.5 DELETE
13.5.6 CLOSE
13.5.7 DEALLOCATE
13.5.8 最簡單的游標語法
13.5.9 完全可滾動的Transact-SQL游標
13.5.10 使用Transact-SQL游標進行並行性控制
13.6 游標變數
13.6.1 獲得游標信息
13.7 使用文本和圖像數據
13.7.1 WRITETEXT
13.7.2 READTEXT
13.7.3 UPDATETEXT
13.8 總結
第四部分 性能和調整
第十四章 鎖定
14.1 鎖管理器
14.1.1 鎮管理器和孤立級別
14.1.2 原子鎖
14.1.3 死鎖
14.2 用戶數據的鎖類型
14.2.1 鎖的類型
14.2.2 鎖的粒度
14 2.3 鎖的持續時間
14.2.4 鎖的擁有關係
14.2.5 查看鎖
14.3 鎖的兼容性
14.4 鎖定的內部結構
14.4.1 鎖塊
14.4.2 鎖擁有者塊
14.4.3 syslockinfo表
14.5 綁定連線
14.6 行級鎖定和頁面級鎖定
14.6.1 鎖的提升
14.7 鎖定暗示和跟蹤標記
14.8 總結
第十五章 查詢處理器
15.1 SQL管理器
15.2 編譯和最佳化
15.2.1 編譯
15.2.2 最佳化
15.2.3 查詢最佳化器的工作方式
15.2.4 聯接選擇
15.2.5 其他處理策略
15.2.6 維護統計信息
15.3 過程快取
15.4 使用存儲過程和快取機制
15.4.1 特殊快取
15.4.2 自動參數化
15.4.3 sp_executesql過程
15.4.4 準備和執行方法
15.4.5 共享快取計畫
15.4.6 檢查計畫快取
15.4.7 快取中的多個計畫
15.4.8 使用存儲過程和其他快取機制的時間
15.4.9 重新編譯存儲過程
15.4.10 存儲過程的其他好處
15.5 執行
15.6 總結
第十六章 調整查詢
16.1 開發小組
16.2 應用程式和資料庫設計
16.2.1 規範化資料庫
16.2.1 評估重要事務
16.2.3 精簡表行的長度和鍵
16.3 計畫高峰使用
16.4 互動式系統的感知回響時間
16.5 原型、基準程式和測試
16.5.1 開發方法學
16.6 創建有用的索引
16.6.1 謹慎選擇群集索引
16.6.2 使非群集索引具有較高的選擇性
16.6.3 裁剪對重要事務的索引
16.6.4 注意列的順序
16.6.5 聯接中使用的索引列
16.6.6 根據需要創建或刪除索引
16.6.7 Index Tuning Wizard
16.7 監視查詢的性能
16.7.1 STATISTICS IO
16.7.2 STATISTICS TIME
16.7.3 計畫顯示
16.7.4 使用查詢暗示
16.7.5 存儲過程的最佳化
16.8 並行性和一致性的權衡
16.9 解決阻塞的問題
16.9.1 索引和阻塞
16.10 解決死鎖問題
16.10.1 循環死鎖示例
16.10.2 轉換死鎖示例
16.10.3 防止死鎖
16.10.4 處理死鎖
16.10.5 自願作為死鎖的犧牲者
16.10.6 觀察鎖定活動
16.10.7 標識阻塞的原因
16.10.8 鎖暗示
16.11 隔離OLTP和DSS應用程式
16.12 環境因素
16.12.1 區分大小寫
16.12.2 可控性和ANSI兼容設定
16.12.3 區域特定的SET選項
16.13 總結
第十七章 配置和性能監視
17.1 作業系統的配置設定
17.1.1 任務管理
17.1.2 資源分配
17.1.3 PAGEFILE.SYS的位置
17.1.4 檔案系統選擇
17.1.5 不重要的服務
17.1.6 網路協定
17.2 SQL Server的配置設定
17.2.1 伺服器範圍的選項
17.2.2 緩衝區管理器選項
17.2.3 SQLSERVER.EXE的啟動參數
17.3 系統維護
17.4 監視系統行為
17.4.1 SQL Profiler
17.4.2 System Monitor
17.4.3 其他性能監視因素
17.5 總結
參考書目