第1章 安装和配置SQL Server 1
1.1 SQL Server的版本和版本选择 1
目录 1
1.2 安装SQL Server的常见问题 3
1.4 如何实现无值守安装 5
第11章 数据备份与还原 31 5
1.3 如何理解实例 5
13.5.3 不安全的扩展存储过程 41 9
1.5 Desktop Engine 9
1.5.2 获取MSDE 2000 9
1.5.1 MSDE 2000概述 9
1.5.3 安装MSDE 2000 10
1.5.4 管理MSDE 2000 11
1.6.1 确定已安装SQL Server的版本 12
1.5.5 支持的并发用户数和数据库容量 12
1.6 SQL Server Service Pack 12
1.6.2 SQL Server Service Pack 4介绍 13
1.6.3 SQL Server Service Pack 4的内容 13
1.6.4 安装SQL Server Service Pack 4的常见问题 14
1.7 SQL Server服务 15
1.8 服务账户 15
1.9 影响SQL Server运行的设置 18
1.9.1 内存配置 18
1.9.2 数据存储 20
第2章 日期处理 23
2.1 日期类型概述 23
2.2 日期处理函数 25
2.2.1 日期增减函数 25
2.2.2 日期信息获取函数 26
2.2.4 其他日期处理相关函数 27
2.2.3 日期差值计算函数 27
2.3 日期选项设置 29
2.3.1 default language选项 30
2.3.2 SET DATEFIRST 31
2.3.3 SET DATEFORMAT 31
2.3.4 SET LANGUAGE 33
2.4 日期格式化与日期推算处理 34
2.4.1 日期格式化处理 34
2.4.2 日期推算处理 35
2.4.3 日期加减处理 38
2.5.1 生日处理 40
2.5 日期处理实例 40
2.5.2 生成日期列表 42
2.5.3 工作日处理 46
2.5.4 工作时间计算 49
2.6.1 日期处理中常犯的错误 51
2.6 日期处理疑难解答 51
2.6.2 常见的低效率日期处理方法 52
2.6.3 日期与数字 53
第3章 字符处理 55
3.1 字符类型概述 55
3.2 字符串分拆 56
3.2.1 循环截取法 57
3.2.2 动态Transact-SQL语句法 57
3.2.3 辅助表法 59
3.2.4 分拆数据到列 61
3.2.5 分拆数字数据 62
3.2.6 分拆短信数据 63
3.3 字符串合并 64
3.3.1 游标合并法 65
3.3.2 SFLECT语句合并法 66
3.3.3 临时表合并法 68
3.3.4 固定行合并法 69
3.4 其他字符串处理要求 70
3.4.1 分段截取 70
3.4.2 分段更新 72
3.4.3 IP地址处理 72
3.5 字符串分拆与合并处理应用实例 74
3.5.1 字符串比较 74
3.5.2 字符串交集/并集 75
3.5.3 分拆字符串并统计 78
3.5.4 借用字符串实现无规律排序 82
3.5.5 列车车次查询 82
3.6.1 动态Transact-SQL语句概述 85
3.6 字符串在动态Transact-SQL语句中的应用 85
3.6.2 字符串在编号查询中的使用 87
3.6.3 动态参数存储过程 90
3.6.4 动态Transact-SQL语句中常见问题 92
3.7 text与ntext字段处理 96
3.7.1 text与ntext数据的存储 96
3.7.2 管理text与ntext数据 97
3.7.3 text与ntext字段的复制和合并 99
3.7.4 text与image字段转换 101
3.7.5 ntext字段的REPLACE处理 103
第4章 排序规则 107
4.1 字符存储编码与排序规则 107
4.1.1 字符数据的存储编码 107
4.1.2 UNICODE 108
4.1.3 排序规则 109
4.1.4 排序规则比较和排列规则 111
4.1.5 使用排序规则 112
4.1.6 如何选择字符字段类型 116
4.2 排序规则应用 117
4.2.1 拼音处理 117
4.2.2 全角与半角字符处理 120
5.1 自动编号 123
5.1.1 IDENTITY 123
第5章 编号处理 123
5.1.2 ROWGUIDCOL 129
5.2 手工编号 131
5.2.1 查表法 131
5.2.2 独立编号表法 135
5.2.3 随机编号 139
5.3 缺号与补号 143
5.3.1 检查缺号 143
5.3.2 补号处理 143
5.3.3 编号重排 146
5.4 编号查询 150
5.4.1 已用编号分布查询 150
5.4.2 缺号分布查询 151
5.4.3 生成已用编号和缺号分布字符串 152
5.4.4 缺勤天数统计 155
6.1.1 空(NULL)值对查询的影响 159
第6章 数据统计与汇总 159
6.1 基本查询 159
6.1.2 联接 161
6.1.3 UNION 与UNION ALL 165
6.1.4 数据填充查询 167
6.1.5 上限与下限区间统计 169
6.1.6 随机记录查询 170
6.2 分级汇总 173
6.2.1 实现分级汇总处理 173
6.2.2 分级汇总结果的过滤 176
6.2.3 分级汇总结果显示格式处理 177
6.2.4 分级汇总结果的排序处理 179
6.3 交叉数据报表 181
6.3.1 实现原理 181
6.3.2 多列转置 184
6.3.3 动态列 185
6.3.4 动态列中的字符溢出处理 188
6.3.5 特殊的交叉报表 191
6.4 典型数据统计案例 193
6.4.1 库存明细账查询 193
6.4.2 同期及上期数据对比 197
6.4.3 动态分组统计 199
6.4.4 销售排行榜 200
第7章 分页处理 205
7.1 应用程序中的分页处理 205
7.2 数据库中的分页处理 207
7.2.1 使用TOP N实现分页 207
7.2.2 使用字符串 211
7.2.3 使用临时表 213
7.2.4 使用SQL Server的系统存储过程处理分页 216
7.3 特殊要求的分页处理 217
7.3.1 随机显示的分页处理 217
7.3.2 分类数据的分页处理 221
8.1 单编号处理法 223
第8章 树形数据处理 223
8.1.1 方法概述 223
8.1.2 逐级汇总 225
8.1.3 编码重排 226
8.1.4 调整编码规则 229
8.1.5 调整编码隶属关系 233
8.2 编号处理法 238
8.2.1 方法概述 239
8.2.2 树形数据排序 240
8.2.3 查找子节点 244
8.2.4 查找父节点 245
8.2.5 编码校验 246
8.2.6 节点复制 249
8.2.7 节点删除 251
8.2.8 逐级汇总 253
8.3 树形数据的扩展形式 256
8.3.1 产品配件清单 256
8.3.2 公交车乘车线路查询 258
第9章 数据导入与导出 261
9.1 访问外部数据 261
9.1.1 链接服务器 261
9.1.2 OPENROWSET与OPENDATASOURCE 268
9.1.3 外部数据访问方法总结 270
9.2.1 查询文本文件内容 274
9.2 文本文件的导入与导出 274
9.2.2 BCP与BULK INSERT 277
9.3 导入与导出中的常见问题 285
9.3.1 访问外部数据的注意事项 285
9.3.2 使用BCP或者BULK INSERT时的注意事项 286
9.3.3 外部数据文件位置及文件访问权限问题 287
9.4 在客户端实现SQL Server数据导入与导出处理 288
9.4.1 在Access数据库中实现与SQL Server之间的数据交换 288
9.4.2 实现客户端其他OLE DB数据源与SQL Server之间的数据交换 289
9.4.3 在客户端实现SQL Server数据导入与导出处理的一些说明 289
9.5 在数据库中存取文件 290
9.5.1 SQL Server中的文件存取方法 290
9.5.2 程序中的文件存取处理方法 292
10.1 作业概述 295
10.1.1 定义作业 295
第10章 作业 295
10.1.2 使用系统存储过程定义作业的常用模板 300
10.2 作业的应用 303
10.2.1 定时启用(或者停用)数据库 303
10.2.2 执行耗时的存储过程 304
10.2.3 秒级作业 305
10.3 使用作业的疑难解答 309
11.1 数据库备份与还原方法介绍 315
11.1.1 完全备份与还原 315
11.1.2 差异备份与还原 317
11.1.3 日志备份与还原 319
11.1.4 数据文件或文件组备份与还原 320
11.1.5 备份设备 321
11.1.6 数据库恢复模型对数据库备份和还原的影响 322
11.2 制订数据库备份方案 326
11.2.1 备份方案制订原则 326
11.2.2 建立数据备份方案 327
11.3 数据库备份与还原的实践应用 332
11.3.1 系统数据库的备份与还原 332
11.3.2 数据库迁移 336
11.3.3 部分数据库还原 339
11.3.4 抢救损坏数据库中的数据 341
11.3.5 将数据还原到指定时间点 343
11.3.6 将数据还原到指定标记点 345
11.3.7 同步备用服务器 346
11.4 数据备份与还原疑难解答 349
11.4.1 数据备份与还原中的常见问题 349
11.4.2 使用媒体集备份时的常见问题 354
11.4.3 数据库还原中的孤立用户问题 356
11.4.4 查询备份文件中的信息 360
第12章 用户定义数据类型 361
12.1 用户定义数据类型概述 361
12.1.1 创建和删除用户定义数据类型 361
12.1.2 为用户定义的数据类型绑定规则 365
12.1.3 为用户定义的数据类型绑定默认值 370
12.2 修改用户定义数据类型 373
12.2.1 修改被表引用的用户定义数据类型 373
12.2.2 修改被存储过程引用的用户定义数据类型 379
第13章 数据库安全 383
13.1 SQL Server的存取构架 383
13.1.1 表格格式数据流(TDS) 383
13.1.2 Net-Library与网络协议 384
13.1.3 Net-Library加密 387
13.2 用户管理 388
13.2.1 身份验证模式 388
13.2.2 登录、用户、角色和组 390
13.2.3 管理用户 395
13.3 数据文件安全 403
13.4 SQLServer安全配置 405
13.4.1 安全配置建议 405
13.4.2 使用安全套接字层(SSL)加密 408
13.5 应用程序上的安全 417
13.5.1 防止SQL注入式攻击 417
13.5.2 限制应用程序访问 418
第14章 系统表应用实例 423
14.1 系统对象概述 423
14.1.1 每个数据库中都存在的系统表 424
14.1.2 仅在系统数据库中存在的系统表 424
14.1.3 系统表应用中三个重要的系统存储过程 426
14.2 系统表在对象信息检索中的应用 429
14.2.1 搜索指定的对象所处的数据库 429
14.2.2 获取存储过程参数定义 432
14.2.3 搜索指定字符在哪个表的哪个字段中 435
14.2.4 非UNICODE字段改为UNICODE字段的可行性查询 438
14.2.5 字段相关对象查询 439
14.2.6 生成数据库字典 443
14.3 系统对象在处理中的应用 444
14.3.1 批量处理数据库中的对象 444
14.3.2 将所有的char、varchar改为nchar、nvarchar 445
14.3.3 标识列与普通列的相互转换 447
14.3.4 把列添加指定位置 450
14.3.5 在两个SQLServer数据库之间复制对象 451
第15章 SQL Server应用疑难解答 455
15.1 访SQL Server实例的常见问题 455
15.1.1 连接失败 455
15.1.2 用户登录失败 458
15.1.3 测试连接到SQL Server实例的方法总结 458
15.1.4 超时 459
15.1.5 单用户的问题 460
15.1.6 默认数据库问题 461
15.2 索引中的疑难解答 462
15.2.1 索引对查询条件的影响 462
15.2.2 索引对查询结果顺序的影响 465
15.2.3 索引对数据操作的影响 469
15.3 数据库日志疑难解答 470
15.3.1 影响日志文件增长的因素 471
15.3.2 从事务日志中删除日志记录 472
15.3.3 日志文件处理中的误区 472
15.3.4 合理解决日志文件增长 473
15.4 错误处理疑难解答 474
15.4.1 错误处理概述 474
15.4.2 错误处理严重程度 475
15.4.3 使用@@ERROR的疑难解答 476
15.4.4 XACT_ABORT与RAISERROR的疑难解答 477
15.5 游标处理疑难解答 479
15.5.1 全局游标与本地游标 479
15.5.2 检查指定的游标是否存在 480
15.5.3 事务提交或者回滚对游标的影响 482
15.5.4 可更新的游标 483
15.6 SQL Server处理中的其他疑难解答 484
15.6.1 并发工作负荷调控器 484
15.6.2 存储过程中的疑难解答 486
15.6.3 标识值疑难解答 488
15.6.4 全文检索疑难解答 491
15.6.5 发布与订阅中的常见问题 494
15.6.6 其他疑难解答 496