
SQL Server 2005是微软的新一代数据管理和分析解决方案,为企业级数据和分析应用程序提供了更强的扩展性、可用性和安全性。围绕着SQL Server 2005这一主题,本书通过一次一个步骤,一学就会的方式,提升读者设计、测试、部署和维护SQL Server数据库的技能。
本书共13章,介绍了如何创建SQL Server数据库来保存应用程序数据,如何通过SQL Server来查询数据,如何修改SQL Server中的数据。讲解透彻,借助于练习帮助读者掌握SQL Server应用技巧,是一本理想的初、中级参考书,适合数据库应用和开发人员阅读。
前 言
对每一个需要进行数据存储、分析和报告的组织而言,数据库解决方案都是不可或缺的一部分。Microsoft SQL Server 2005为实现数据库解决方案提供了一个健壮的平台。Microsoft SQL Server 2005易于使用的特性使其成为一个完美的数据库环境。特别要指出的是,作为SQL Server的最新版本,Microsoft SQL Server 2005比以前任何版本更安全,可扩展性更强,更易使用和管理。
本书是为熟悉SQL Server并希望了解SQL Server 2005最新特性的开发人员和数据库管理人员编写的。具有其他平台经验的开发人员和数据库管理人员,即使不熟悉SQL Server,也可以使用本书。通过每章逐步骤的介绍,您将全面掌握如何使用SQL Server 2005实现数据库解决方案所涉及的最重要选项。
本书侧重于基础知识,包括设计、安全性、备份和发布。在此过程中,将简单介绍一些相关的话题,例如如何对SQL Server的先前版本进行移植。本书全面介绍如何获取和分析数据,用整章的篇幅专门介绍如何通过Internet访问SQL Server。同时,还介绍了使SQL Server成为全面数据库解决方案的一些特性。这些特性用于事务、快照、审计、报表和通知,以及新的特性,如XML增强支持。
本书的组织结构
本书第Ⅰ部分介绍通过SQL Server 2005创建数据库解决方案的基础知识:在设计数据库时应该考虑什么;如何针对非授权访问保护数据库;如何防止数据的意外丢失;如何将数据发布到其他服务器。
第Ⅱ部分解释如何在数据库中获取数据:如何使用聚合函数通过汇总和分析将数据变成信息;设计数据库以实现最快的数据检索;为用户提供查看数据的灵活性;从其他源连接数据;通过Internet连接到SQL Server。
第Ⅲ部分通过对其他特性的讨论来体现SQL Server 2005的强大功能:使用事务来保证数据的完整性;保存环境的历史信息;使用Reporting Services设计报表;在数据发生变化时通过Notification Services更新应用程序。
在读完本书之后,您将掌握实现数据库解决方案需要掌握的所有知识,全面了解SQL Server 2005的功能,为进一步探索高级主题打下良好基础。
找到最佳学习起点
读者对象 遵循以下步骤 不熟悉SQL Server的读者 1.按照中“范例代码”一节的指示安装示例代码
2.学习第1章~第7章
3.根据自己的经验和兴趣学习第8章~第13章
续表
读者对象 遵循以下步骤 不熟悉数据库管理的读者 1.按照中“范例代码”一节的指示安装示例代码
2.学习第1章~第4章,浏览第5章~第13章,以全面了解SQL Server 2005特性 从其他数据库平台移植到SQL Server 2005的读者 1.按照中“范例代码”一节的指示安装示例代码
2.浏览前两章,然后集中学习第3章~第13章 从SQL Server的早期版本移植到SQL Server 2005的读者 1.按照中“范例代码”一节的指示安装示例代码
2.浏览前7章,然后集中学习第8章~第13章,其中广泛介绍SQL Server 2005的新特性和更新后的特性 完成练习之后再参考本书的读者 1.使用本书目录来查找特定主题的信息
2.阅读每一章结束处的快速参考来查找此章中所出现的语法和技术概要回顾 本书的特色和约定
为了让本书可读性更强,更易于理解,本书采用了一些约定。在开始学习之前,请阅读以下内容,其中解释了书中采用的约定,并指出了可能要用的有用特性。
约定
* 每一个练习都是一连串的任务。每一个任务都以一系列步骤的形式展现。
* 特色段落“提示”针对成功完成一个步骤而提供额外的信息或可选的方法。
* 特色段落“重要提示”提醒进行下一步之前需要检查的信息。
* 需要读者键入的文本用斜体表示。
* SQL关键字用大写表示。
* 一系列菜单命令之间用管道字符(|)分割。
* 两个键之间的加号(+)意味着必须同时按下这些键。例如,“按Alt+Tab”的意思是按住Alt键的同时按下Tab键。
其他特色
* 穿插在书中的补充材料提供与主题相关的详细信息。补充材料可能包括背景知识、设计提示或者与所讨论信息有关的特性。
* 每一章的末尾有一个快速参考,其中简要列出了如何执行当前章所学的任务。
系 统 需 求
要想完成书中的练习,需要以下硬件和软件:
注意 本书不配SQL Server 2005软件!本书资源只包含完成练习所需的范例代码。SQL Server 2005软件必须单独购买。
* Microsoft Windows XP并安装Service Pack 2,Microsoft Windows Server 2003并安装Service Pack 1或 Microsoft Windows 2000并安装Service Pack 4
* Microsoft Visual Studio 2005 Professional Edition
* Microsoft SQL Server 2005 Developer Edition
* 600 MHz Pentium或兼容处理器 (推荐1 GHz Pentium处理器)
* 256 MB 内存(推荐512 MB或更多)
* 至少256色的视频监视器(800×600或更高分辨率,推荐1024×768增强色16位)
* CD-ROM或DVD-ROM驱动器
* Microsoft鼠标或兼容指示设备
范 例 代 码
本书资源包括进行书中练习所用的范例代码。可以使用这些示例自己进行试验。也可以在进行练习时从示例文件中复制并粘贴代码作为自己生成的代码。这些文件和教程中按部就班的指导便于读者边做边学,这是获取并记忆新技巧的简单而有效的好方法。
安装范例代码
执行以下步骤在计算机上安装范例代码,以便在本书的练习中使用它们。
1. 访问www.wenyuan.com.cn或www.tup com.cn,找到《SQL Server 2005从入门到精通(应用技术基础)》,单击“本书资源”链接,下载压缩包。
2. 解开压缩包。
3. 单击“StartCD”图标。从弹出的菜单中单击“Install Samples Files”。
4. 遵照指导进行安装。
范例代码将默认安装到计算机中的以下位置:
My Documents\Microsoft Press\SQLAppliedTechSBS\
使用范例代码
书中每一章都解释了何时及如何使用本章的什么范例代码。使用范例代码的时候,本书将指出示例文件及其所在的文件夹。这些章都根据对真实程序项目场景的模拟而创建,因此您可以轻松地在自己的工作中应用所学的技巧。对于SQL脚本示例,一般需要在SQL Server Management Studio中打开它们,选择并执行脚本中相关的部分。对于Visual Studio项目,需要双击.sln文件打开项目,并在Visual Studio中操作项目中的有关代码。
卸载范例代码
执行以下步骤从计算机中卸载范例代码。
1. 在控制面板中,打开“添加或删除程序”。
2. 在“目前安装的程序”列表中,选择“Microsoft SQL Server 2005 Applied Techniques Step by Step”。
3. 单击“删除”。
4. 遵照指示卸载范例代码。
配置SQL Server 2005 Express Edition
本书使用SQL Server 2005的AdventureWorks示例数据库。确认已经遵照SQL Server安装程序中的指导安装了这个示例数据库。然后遵照以下步骤来授权进行书中练习时所用的用户帐户,使其能够访问这个数据库。
1. 使用具有管理员权限的帐户登录到计算机上的Microsoft Windows。
2. 在Windows“开始”菜单上,单击“所有程序”,单击“附件”,然后单击“命令提示符”打开一个“命令提示符”窗口。
3. 在“命令提示符”窗口中,键入以下命令(区分大小写):
sqlcmd –S YourServer\InstanceName –E
根据自己的情况替换YourServer和InstanceName。
可以在运行sqlcmd命令前在“命令提示符”窗口中运行hostname命令,借此找到计算机名称。
4. 在1>提示符下,键入以下命令(要包括方括号),然后按回车键:
sp_grantlogin [YourServer\UserName]
将YourServer替换成您计算机的名称。将UserName替换为您将使用的用户帐户名。
5. 在2>提示符下,键入以下命令:
GO
然后按回车键。如果看到错误信息,确认自己正确键入了包括方括号在内的sp_grantlogin命令。
6. 在1>提示符下,键入以下命令(要包括方括号):
sp_addsrvrolemember [YourServer\UserName], dbcreator
然后按回车键。
7.在2>提示符下,键入以下命令:
GO
然后按回车键。如果看到错误信息,确认自己正确键入包括方括号在内的sp_addsrvolemember命令。
8. 在1>提示符下,键入以下命令:
exit
然后按回车键。
9. 关闭“命令提示符”窗口。
10. 注销管理员帐号。
本 书 支 持
我们对本书的精确性做出了最大的努力。
Microsoft Learning提供对本书的支持,可以访问以下地址获得:
http://www.microsoft.com/learning/support/search.asp
如果对本书有任何评论、问题或意见,或有通过访问以上网站不能解决的问题,请将它们通过电子邮件发送到Microsoft Press。
mspinput@microsoft.com
或者通过邮件邮寄到:
Microsoft Press
Attn: Microsoft SQL Server 2005 Step by Step Editor
One Microsoft Way
Redmond, WA 98052-6399
请注意,以上地址不提供对Microsoft 软件产品的支持。
??
??
??
??
VI
SQL Server 2005从入门到精通
VII
目 录
第Ⅰ部分 如何建立SQL Server数据库来保存应用程序的数据
第1章 数据库中选择存储哪些
应用程序数据 3
1.1 在哪里存储应用程序设置 3
1.2 在哪里存储用户设置 4
1.3 在哪里存储XML文档 6
1.3.1 使用XML数据类型 6
1.3.2 在文件系统中存储
XML数据 10
1.4 在哪里存储外部应用程序文件 10
小结 11
第1章快速参考 12
第2章 数据库安全基本原则 13
2.1 保护数据库系统的网络安全设计 13
2.1.1 授权远程访问 13
2.1.2 保护外部访问 14
2.2 管理对SQL Server实例的访问 15
2.2.1 选择身份验证模式 15
2.2.2 连接到SQL Server实例 16
2.2.3 拒绝用户访问 20
2.2.4 使用SQL Server身份验证
连接到SQL Server 21
2.3 管理对SQL Server数据库的访问 21
2.4 对数据库访问进行授权 21
2.4.1 创建数据库用户 22
2.4.2 管理数据库用户 22
2.4.3 管理孤立用户 22
2.4.4 启用Guest用户 23
2.5 授予数据库权限 23
2.5.1 创建数据库角色 23
2.5.2 管理数据库角色 24
2.5.3 授予小粒度的数据库权限 24
2.6 管理应用程序角色 25
2.6.1 创建应用程序角色 25
2.6.2 使用应用程序角色 25
2.6.3 删除应用程序角色 26
2.7 管理对架构的访问 26
2.8 管理对表和列的访问 28
2.8.1 更改对表的访问 28
2.8.2 提供对列的单独访问 29
2.9 管理对可编程对象的访问 30
2.9.1 管理存储过程的安全性 30
2.9.2 管理用户定义函数的安全性 31
2.9.3 管理程序集的安全性 32
2.9.4 管理所有权链 32
2.9.5 管理执行上下文 33
小结 34
第2章快速参考 35
第3章 使用灾难恢复技术
保护数据库 36
3.1 使用完整数据库备份 36
3.1.1 简单恢复模式 37
3.1.2 备份设备 38
3.1.3 执行完整数据库备份 39
3.2 使用差异备份 39
3.3 使用事务日志备份 41
3.3.1 完整恢复模式 42
3.3.2 执行事务日志备份 43
3.4 恢复数据库 44
3.4.1 获取备份信息 44
3.4.2 使用SQL Server Management
Studio还原数据库 45
3.4.3 使用T-SQL从简单
备份策略还原数据库 47
3.4.4 使用T-SQL从完整
备份策略还原数据库 48
3.4.5 还原系统数据库 49
3.5 使用SQL维护计划向导安排备份 52
小结 53
第3章快速参考 53
第4章 将数据库迁移到其他系统 55
4.1 使用备份和还原来迁移数据 56
4.1.1 只使用完整数据库备份 56
4.1.2 完整数据库备份与差异
和事务日志备份 61
4.2 使用分离和附加数据库
来迁移数据 64
4.3 使用复制来迁移数据库 66
4.4 使用SSIS迁移数据 68
4.5 自动并计划执行数据迁移 73
小结 75
第4章快速参考 75
第Ⅱ部分 如何通过SQL Server查询数据
第5章 聚合函数计算 79
5.1 计算行数 79
5.1.1 用T-SQL函数获得记录
的数量 80
5.1.2 筛选结果 82
5.2 计算合计和小计 84
5.3 计算累加和 88
5.4 计算统计值 90
5.4.1 使用AVG 91
5.4.2 使用MIN 和 MAX函数 91
5.4.3 使用复杂的统计函数 92
5.4.4 使用关键字DISTINCT 92
5.5 用CLR设计用户定义聚合函数 93
小结 98
第5章快速参考 98
第6章 提高查询性能 100
6.1 了解执行计划 100
6.2 建立索引以快速执行查询 103
6.2.1 堆结构 103
6.2.2 表中的索引 106
6.2.3 索引视图 118
6.2.4 加速联接操作的索引 119
6.2.5 数据分布和统计 122
6.2.6 索引碎片 124
6.3 用“数据库引擎优化顾问”
来优化查询 125
小结 127
第6章快速参考 128
第7章 动态生成查询 129
7.1 生成查询的用户界面 129
7.2 获取数据库中表的信息 132
7.3 动态排序和筛选 138
7.3.1 在动态查询中加入排序 138
7.3.2 筛选动态查询 139
7.3.3 一个完整的动态查询
示例程序 139
7.3.4 示例程序如何生成筛
选字符串 141
7.3.5 格式化一个筛选串时要
考虑的问题 143
7.4 动态查询中的参数和安全问题 144
7.4.1 SQL注入攻击是
如何工作的 144
7.4.2 如何防止SQL注入攻击 146
7.4.3 如何使用sp_ExecuteSql 147
小结 148
第7章快速参考 148
第8章 使用远程数据源的数据 149
8.1 在中间层读取远程数据源的数据 149
8.2 在SQL Server中读取远程
数据源数据 151
8.2.1 使用即席查询读取远程
数据源的数据 152
8.2.2 使用链接服务器读取远程
数据源的数据 156
8.2.3 使用链接服务器读取数据 162
8.3 在SQL Server中对远程数据源数据
进行插入、更新和删除 163
8.3.1 使用即席链接插入、
更新和删除数据 163
8.3.2 使用链接服务器插入、
更新和删除数据 164
小结 165
第8章快速参考 165
第9章 通过Internet读取
SQL Server的数据 166
9.1 直接访问SQL Server 166
9.1.1 通过TCP/IP的连接 166
9.1.2 通过HTTP端点连接
SQL Server 171
9.2 通过HTTP端点与其他系统协作 175
9.3 通过附加层访问SQL Server 176
9.3.1 ASP.NET Web服务 177
9.3.2 Microsoft .NET Remoting 181
小结 186
第9章快速参考 186
第Ⅲ部分 如何在SQL Server中修改数据
第10章 用事务来提供安全的
数据库并发 189
10.1 商业事务和SQL Server事务 189
10.2 在SQL Server中定义事务 190
10.2.1 自动提交模式 190
10.2.2 显式事务 191
10.2.3 隐式事务 193
10.2.4 嵌套事务 195
10.3 管理事务隔离 196
10.3.1 事务的隔离级别 199
10.3.2 阻塞和死锁 205
10.4 ADO.NET中的事务 208
小结 209
第10章快速参考 209
第11章 保存历史数据 211
11.1 为数据库捕获快照 211
11.1.1 创建数据库快照 212
11.1.2 还原至一个数据库快照 213
11.1.3 删除数据库快照 214
11.2 在历史表中汇总数据 215
11.3 在索引视图中汇总数据 219
11.4 使用审核列和审核表跟踪变化 221
11.4.1 对列的审核 221
11.4.2 审核表 223
11.4.3 使用审核表还原数据 226
小结 226
第11章快速参考 227
第12章 Reporting Services入门 228
12.1 报表解决方案的需求 228
12.1.1 创建报表 229
12.1.2 部署报表 229
12.1.3 访问报表 229
12.1.4 发布报表 229
12.1.5 扩展Reporting Services 229
12.1.6 管理Reporting Services 230
12.2 设计时需要考虑的事项 230
12.3 Reporting Services的体系架构 231
12.3.1 服务器端组件 231
12.3.2 客户端组件 233
12.3.3 可扩展性 233
12.4 创建一个基本的报表 234
12.4.1 设置一个报表 234
12.4.2 布局、测试并优化报表 239
12.4.3 筛选数据 250
12.4.4 在报表中加入代码 253
小结 255
第12章快速参考 255
第13章 Notification Services
入门 257
13.1 一个使用Notification Services
的场景 257
13.2 收集需求 257
13.2.1 初步需求 258
13.2.2 附加需求 258
13.2.3 历史信息 259
13.2.4 设备的差异性 259
13.2.5 通知信息 260
13.3 创建应用程序 260
13.3.1 通知应用程序的组件 261
13.3.2 映射Notification Services
元素的需求 263
13.3.3 开发的基本架构 264
13.3.4 Notification Services
应用程序基础 266
13.3.5 初始部署 270
13.4 运行应用程序 276
13.4.1 在应用程序中添加订阅者、
设备和订阅 276
13.4.2 指定要通知哪些订阅者 277
13.4.3 生成通知信息 278
13.4.4 发送通知 279
小结 279
第13章快速参考 279
XII
SQL Server 2005从入门到精通
XIII