SQL Server 7编程技术内幕

SQL Server 7编程技术内幕
作 者: (美)John Papa 等著;前导工作室译
出版社: 机械工业出版社
丛编项: 软件开发技术丛书
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Sever
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《SQL Server 7编程技术内幕》作者简介

内容简介

本书从SQLServer7编程的各个方面深入讨论,以数百个实例和大量图表详细讲解高级T-SQL编程、SQLServer7的最新特性、多层应用编程、数据迁移及集成、各种应用程序接口等专题。读者可以直接将这些技术运用于相应场景,获得完善稳定的高性能应用。本书是SQLServer7高级编程人员的必备工具书,也可供SQLServer系统管理人员、数据库设计人员参考。

图书目录

目 录

译者序

前言

第一部分 高级编程技术

第1章 利用工具 1

1.1 Microsoft Management Console 1

1.2 使用Enterprise Manager管理

SQL Server 2

1.2.1 工具 3

1.2.2 向导 3

1.2.3 任务 3

1.2.4 任务簿 3

1.2.5 数据库图表 4

1.2.6 用Open Table维护数据 5

1.2.7 SQL Server Profiler 6

1.3 使用Query Analyzer查询SQL Server 6

1.3.1 配置 6

1.3.2 上下文相关帮助 6

1.3.3 颜色编码和字体 7

1.3.4 结果窗格 7

1.3.5 图形SQL执行计划 8

1.3.6 索引分析 8

1.4 小结 9

第2章 超越基本的数据操纵语言 10

2.1 命名约定 10

2.1.1 Microsoft自身的命名分歧 10

2.1.2 命名规则 12

2.2 使用子查询和在线视图 14

2.2.1 T-SQL中的子查询 14

2.2.2 在线视图 18

2.3 外联结. 交叉联结和自联结 21

2.3.1 外联结 21

2.3.2 交叉联结 25

2.3.3 自联结 25

2.4 更高级的DELETE和UPDATE语句 27

2.4.1 DELETE语句的深入研究 27

2.4.2 改进的新UPDATE语句 28

2.5 聚合函数 29

2.5.1 AVG 29

2.5.2 COUNT 30

2.5.3 MAX 30

2.5.4 MIN 30

2.5.5 SUM 30

2.5.6 STDEV 31

2.5.7 STDEVP 31

2.5.8 VAR 31

2.5.9 VARP 31

2.6 GROUP BY和HAVING短语 31

2.6.1 GROUP BY 31

2.6.2 HAVING 32

2.7 合并 32

2.8 小结 32

第3章 查询优化 33

3.1 深入了解索引结构 33

3.1.1 非聚类索引 33

3.1.2 聚类索引 34

3.1.3 聚类索引和非聚类索引的比较 35

3.1.4 复合索引的优缺点 41

3.1.5 索引的数量 43

3.1.6 使用索引检索和更新数据 44

3.2 索引. 事务和数据操作 44

3.3 事务和索引中的锁机制 45

3.3.1 锁的分类 45

3.3.2 使用索引降低锁并发性 46

3.3.3 事务范围. 事务隔离等级和

锁机制 47

3.4 优化查询优化程序 48

3.4.1 使用索引优化程序提示 48

3.4.2 使用锁定优化程序提示 49

3.4.3 在查询中优化表顺序 50

3.5 使用SQL Server Profiler 52

3.5.1 跟踪内容 52

3.5.2 使用SQL Server Profiler标识问题

查询和用户 54

3.5.3 使用Index Tuning Wizard 54

3.6 小结 55

第4章 高级T-SQL语句 56

4.1 使用CAST和CONVERT 56

4.2 输出信息 57

4.3 sysmessages系统表 58

4.3.1 sysmessages中的错误严重等级 59

4.3.2 定义用户自己的消息 59

4.4 报告错误信息 61

4.5 CASE表达式 62

4.5.1 简单CASE表达式 62

4.5.2 高级CASE表达式 64

4.6 分布事务 69

4.6.1 为何使用分布事务协调器 69

4.6.2 使用DTC维持系统间的一致性 70

4.6.3 在成对事务上使用DTC 72

4.6.4 DTC过程疑难解答 77

4.6.5 调试DTC过程 77

4.7 小结 78

第5章 有效使用内建函数 79

5.1 使用算术函数进行计算 79

5.1.1 ABS 80

5.1.2 CEILING 81

5.1.3 FLOOR 81

5.1.4 POWER 82

5.1.5 RAND 82

5.1.6 ROUND 83

5.1.7 SQUARE 84

5.1.8 SQRT 84

5.2 使用日期函数计算日期 84

5.2.1 DATEADD函数 85

5.2.2 DATEDIFF函数 86

5.2.3 DATENAME函数 86

5.2.4 DATEPART函数 86

5.2.5 GETDATE函数 87

5.2.6 DAY函数 87

5.2.7 MONTH函数 87

5.2.8 YEAR函数 87

5.3 使用字符串函数操作字符串 87

5.3.1 CHARINDEX函数 88

5.3.2 DIFFERENCE函数 89

5.3.3 LOWER函数 89

5.3.4 LTRIM函数 89

5.3.5 REVERSE函数 89

5.3.6 RTRIM函数 89

5.3.7 STR函数 90

5.3.8 SUBSTRING函数 90

5.3.9 使用字符串函数的示例 90

5.4 在SQL中使用文本和图像函数 92

5.5 使用SQL函数检索系统信息 93

5.5.1 DATALENGTH函数 94

5.5.2 ISNULL函数 95

5.5.3 HOST_NAME函数 96

5.5.4 SUSER _NAME函数 96

5.5.5 USER函数 96

5.6 小结 96

第6章 使用游标 97

6.1 游标声明 97

6.2 游标使用规则 99

6.2.1 游标规则 99

6.2.2 游标范围 99

6.3 打开. 关闭和移动游标 100

6.3.1 OPEN和CLOSE语句 100

6.3.2 FETCH语句 101

6.4 高级游标使用 103

6.5 使用游标修改数据 113

6.5.1 游标不能自动更新和删除行 113

6.5.2 使用游标做高级更新操作 114

6.6 小结 116

第7章 存储过程 117

7.1 为何使用存储过程 117

7.2 系统存储过程 117

7.2.1 管理存储过程 117

7.2.2 使用存储过程收集信息 118

7.2.3 使用存储过程进行配置和协调 119

7.2.4 使用存储过程监控系统 120

7.3 扩展存储过程 120

7.3.1 为消息传递使用扩展过程 121

7.3.2 使用扩展过程访问操作系统 121

7.4 创建用户自己的存储过程 122

7.4.1 存储过程中的参数 123

7.4.2 OUTPUT参数 124

7.4.3 返回游标作为参数 125

7.4.4 使用存储过程修改数据 125

7.4.5 改变过程 125

7.5 将消息集成到存储过程 126

7.5.1 PRINT语句 126

7.5.2 RAISERROR函数 126

7.5.3 RETURN语句 127

7.6 存储过程的高级应用 127

7.6.1 创建第一个管理表 127

7.6.2 创建档案管理表 128

7.6.3 添加一个用户登录ID 128

7.6.4 修改用户结束日期 133

7.6.5 删除一个用户 133

7.6.6 改善处理过程的建议 136

7.7 小结 136

第8章 高级字符串操作和按位操作 137

8.1 介绍 137

8.2 使用高级字符串操作拼写金额 137

8.2.1 拼写单个数字 137

8.2.2 拼写tens列 139

8.2.3 综合 142

8.2.4 使用过程拼写金额 145

8.3 二进制操作 149

8.3.1 SQL Server中的二进制操作 150

8.3.2 使用按位操作比较值 150

8.3.3 使用二进制进行EBCDIC转换 152

8.4 小结 154

第9章 动态执行 155

9.1 什么是动态执行 155

9.1.1 合法的动态执行语法 155

9.1.2 在何处使用动态执行 156

9.2 创建可执行串 156

9.2.1 动态选择 156

9.2.2 使用存储过程 158

9.2.3 检索元数据 159

9.2.4 动态删除 160

9.2.5 动态更新 164

9.3 使用游标的动态执行 167

9.4 动态执行的优劣 168

9.4.1 动态执行的优点 168

9.4.2 动态执行的常见陷阱 171

9.5 小结 172

第10章 安全问题 173

10.1 鉴别模式 173

10.1.1 安全模式 173

10.1.2 鉴别过程 174

10.1.3 选择一种鉴别模式 175

10.1.4 实现一种鉴别模式的步骤 175

10.1.5 创建登录帐号 176

10.2 给用户和角色分配登录 177

10.2.1 给用户帐号分配登录 177

10.2.2 给角色分配登录 178

10.3 给用户和角色分配权限 181

10.3.1 权限的类型 181

10.3.2 授权. 拒绝和剥夺权限 181

10.4 设计安全策略 183

10.5 管理应用程序的安全性 183

10.5.1 使用存储过程和视图的

安全管理 184

10.5.2 使用应用程序角色进行客户

应用程序管理 184

10.6 小结 185

第11章 专用触发器 186

11.1 嵌套. 递归和触发器基础 186

11.1.1 inserted和deleted表 187

11.1.2 update()函数 188

11.1.3 嵌套触发器 190

11.1.4 递归触发器 190

11.1.5 触发器的T-SQL限制 191

11.1.6 带触发器的系统表作用 191

11.2 使用触发器加强业务规则 193

11.3 触发器检查 198

11.4 存储系统信息 199

11.5 用触发器维护引用完整性 201

11.6 级联删除触发器 205

11.7 级联更新触发器 207

11.8 小结 209

第12章 更新表索引和统计信息 210

12.1 索引性能和调整 210

12.1.1 设计快速的索引 210

12.1.2 分布页面和步进存储数据 211

12.1.3 使用索引密度代替步进值 211

12.1.4 更新分布页面 212

12.2 创建实用程序进行优化表索引 212

12.3 对最后的优化进行验证 213

12.4 自动运行任务 214

12.4.1 自动执行存储过程 215

12.4.2 调度任务 215

12.5 使用DBCC语句监控数据库 218

12.5.1 CHECKALLOC 218

12.5.2 CHECKCATALOG 219

12.5.3 CHECKDB 219

12.5.4 CHECKFILEGROUP 220

12.5.5 CHECKIDENT 220

12.5.6 CHECKTABLE 220

12.5.7 DBREPAIR 221

12.5.8 DBREINDEX 221

12.5.9 dllname 222

12.5.10 INPUTBUFFER 222

12.5.11 NEWALLOC 222

12.5.12 OPENTRAN 222

12.5.13 OUTPUTBUFFER 222

12.5.14 PINTABLE 223

12.5.15 PROCACHE 223

12.5.16 ROWLOCK 223

12.5.17 SHOWCONTIG 223

12.5.18 SHOW_STATISTICS 224

12.5.19 SHRINKDATABASE 224

12.5.20 SHRINKFILE 225

12.5.21 SQLPERF 225

12.5.22 TEXTALL和TEXTALLOC 225

12.5.23 TRACEOFF 225

12.5.24 TRACEON 225

12.5.25 TRACESTATUS 225

12.5.26 UNPINTABLE 225

12.5.27 UPDATEUSAGE 226

12.5.28 USEROPTIONS 226

12.6 小结 226

第13章 交叉制表 227

13.1 交叉制表的描述 227

13.1.1 交叉制表的必要考虑 227

13.1.2 安全性 228

13.1.3 聚合 228

13.1.4 数据分组 229

13.1.5 过程 229

13.2 验证对象的存在 230

13.2.1 验证参数 230

13.2.2 验证数据类型和聚合操作 232

13.3 检查列的安全性 236

13.4 产生列头列表 238

13.4.1 创建colnames表 239

13.4.2 检查列的计数值和长度并

加入行数据 241

13.5 生成交叉表报告 242

13.5.1 创建和修改crosstable 242

13.5.2 更新crosstable值 244

13.5.3 完成任务 250

13.6 小结 252

第二部分 SQL Server必要信息

第14章 编写高效代码 253

14.1 简洁. 高效的代码是好的代码 253

14.1.1 明确目标 253

14.1.2 存储过程的主要逻辑构件 254

14.1.3 编写存储过程的步骤 255

14.1.4 数据检索的示例 256

14.1.5 数据存储的示例 258

14.1.6 数据存档的示例 260

14.1.7 数据删除的示例 262

14.1.8 记录处理的示例 264

14.1.9 业务逻辑的示例 265

14.1.10 优化方法 268

14.1.11 怎样增加可读性 269

14.2 存储过程的模块化 271

14.3 小结 272

第15章 使用多层客户/服务器结构 273

15.1 理解客户/服务器结构 273

15.1.1 客户/服务器模型 273

15.1.2 客户/服务器应用 273

15.1.3 客户/服务器系统 274

15.2 客户/服务器计算结构的发展 274

15.2.1 基于主机的系统 274

15.2.2 两层客户/服务器结构 274

15.2.3 对等系统 275

15.2.4 三层客户/服务器 276

15.3 Web浏览器. Web服务器和

客户/服务器模型 277

15.3.1 两层Web结构 277

15.3.2 三层Web结构 278

15.4 Microsoft的三层服务模型 279

15.4.1 用户服务 279

15.4.2 业务服务 280

15.4.3 数据服务 280

15.5 使用RAD开发工具的多层应用 280

15.5.1 COM和Microsoft应用服务 280

15.5.2 COM和商业应用程序服务 283

15.5.3 RAD和工程生命周期 283

15.5.4 设计和建模 283

15.5.5 开发 284

15.5.6 配置 284

15.6 可扩展性和SQL Server 284

15.6.1 平台可扩展性 285

15.6.2 增强型查询处理 285

15.6.3 动态行锁 285

15.6.4 高级复制 285

15.6.5 移动计算支持 285

15.7 小结 286

第16章 复制 287

16.1 编程人员的复制概念 287

16.1.1 复制语言 287

16.1.2 事务 288

16.1.3 复制如何工作 290

16.1.4 复制局限性 292

16.1.5 复制商业模型 292

16.2 高级复制 293

16.2.1 复制和SQL-DMO 293

16.2.2 存储过程 298

16.2.3 合并复制 299

16.2.4 拨号连接上的复制 300

16.3 小结 301

第三部分 数据转换和集成

第17章 超越Access 303

17.1 判断从Access到SQL Server的

转移需求 303

17.1.1 对企业数据库的要求 304

17.1.2 Access与SQL Server的特性

对比 304

17.2 实现从Access到SQL Server的转移 309

17.2.1 与Visual Basic. Access 以及

SQL Server有关的问题 309

17.2.2 使用DTS Import Wizard 311

17.3 小结 314

第18章 对Sybase SQL Server进行转换 315

18.1 Sybase和Microsoft的发展历程 315

18.2 发展趋势 315

18.3 保留的相似之处 315

18.3.1 系统过程 316

18.3.2 Microsoft T-SQL与Sybase T-SQL

的对比 316

18.4 Microsoft SQL 7和Sybase Adaptive

Server的差别 316

18.4.1 兼容模式 316

18.4.2 事务管理模式 319

18.4.3 隔离等级 319

18.4.4 保留字 320

18.4.5 游标语法 321

18.4.6 回滚触发器 322

18.4.7 优化程序暗示 324

18.4.8 优化查询计划 325

18.4.9 临时表名称 327

18.4.10 RAISERROR语句 327

18.4.11 数据类型 327

18.4.12 标识列 328

18.4.13 PRINT语法 328

18.5 小结 328

第19章 使用Visual C++ 优化ODBC 329

19.1 ODBC体系结构 329

19.2 数据库概要 330

19.3 为何使用ODBC 330

19.3.1 统一连接 331

19.3.2 建立技术 331

19.4 ODBC的安全问题 332

19.5 连接ODBC的方法 333

19.5.1 安装驱动程序 333

19.5.2 使用数据源工作 334

19.6 调用级接口 340

19.6.1 基础 341

19.6.2 连接到数据库 344

19.6.3 语句:操作SQL Server数据 352

19.6.4 提取数据 360

19.6.5 游标 363

19.6.6 端到端:调试ODBC代码 367

19.6.7 使用大数据项 368

19.7 使用Microsoft Foundation Classes

简化ODBC 373

19.7.1 对象模型 373

19.7.2 非常简单:使用记录集和

Class Wizard 376

第20章 从Visual Basic连接SQL Server 384

20.1 为SQL Server开发高效Visual Basic

应用程序 384

20.1.1 三层应用模型:选择一种实现 384

20.1.2 调用级和对象接口:选择一个

接口 386

20.2 使用开放式数据库连接 387

20.2.1 SQL Server的开放式数据库连接

驱动程序 387

20.2.2 连接ODBC数据源 389

20.2.3 执行SQL语句:处理查询 390

20.2.4 结果集 391

20.3 数据访问对象 395

20.3.1 创建和调整数据库:数据定义

语言操作 395

20.3.2 使用记录集:数据操纵语言

操作 399

20.4 远程数据对象 403

20.4.1 RDO与DAO比较 403

20.4.2 RDO层次和rdoEngine对象 404

20.4.3 rdoEnvironment对象 405

20.4.4 建立RDO连接 405

20.4.5 游标和结果集 406

20.4.6 递交查询 410

20.4.7 使用ODBC扩展RDO 411

20.5 小结 411

第21章 通过Visual Basic使用SQL-DMO

管理SQL Server 412

21.1 DMO概念 412

21.1.1 它是什么, 它不是什么 412

21.1.2 从Visual Basic中访问

SQL-DMO对象 412

21.2 实现SQL-DMO对象 413

21.2.1 创建SQL-DMO对象 413

21.2.2 不可创建的对象 414

21.2.3 集 414

21.2.4 列表对象 414

21.3 使用SQL-DMO管理数据库 414

21.4 使用SQL-DMO管理服务器 415

21.5 探索SQL-DMO对象模型 416

21.5.1 SQL-DMO对象模型 416

21.5.2 Application对象 416

21.5.3 SQLServer对象 420

21.5.4 Database对象 422

21.5.5 Table对象 424

21.5.6 JobServer对象 425

21.5.7 Replication对象 426

21.6 SQL-DMO的一般用途 427

21.6.1 用户管理示例 427

21.6.2 文本文件导入/导出示例 430

21.6.3 远程数据库同步示例 431

21.7 构造数据库管理工具 432

21.8 小结 433

第22章 SQL Server数据的自动Web

发布 434

22.1 Web Assistant的构件 434

22.2 使用Web Assistant Wizard 434

22.3 使用xp_makewebtask和

sp_makewebtask 435

22.4 使用sp_makewebtask和

xp_makewebtask精化Web页面 436

22.4.1 sp_makewebtask的必须和基本

的参数 441

22.4.2 页面格式化参数 442

22.4.3 链接相关的参数 443

22.4.4 每页行数参数 444

22.4.5 模板参数 445

22.5 使用工作相关的参数自动Web发布 449

22.6 小结 452

第23章 SQL Server. ADO和Web 453

23.1 数据访问的发展 453

23.2 ADO对象模型 453

23.2.1 ADO主要对象 454

23.2.2 ADO辅助对象 454

23.3 Connection对象 454

23.3.1 事务管理 455

23.3.2 事务考虑 456

23.3.3 连接池 456

23.3.4 执行SQL 457

23.4 Command对象中使用存储过程 458

23.5 Recordset对象 459

23.5.1 检索整个表 460

23.5.2 Recordset基础 460

23.5.3 利用断连记录集 465

23.6 RDS:将ADO移到浏览器 466

23.7 小结 468

第24章 Microsoft的COM和DCOM 469

24.1 DCOM的结构 469

24.1.1 DCE RPC和IDL 470

24.1.2 分布对象 472

24.1.3 DCOM的安全机制 476

24.2 常见技术 477

24.2.1 DCOM服务器 477

24.2.2 配置 478

24.2.3 可扩展性 483

24.2.4 故障 484

24.2.5 性能 484

24.3 小结 484

第25章 未来是Microsoft Transaction

Server的时代 486

25.1 在Internet上应用三层结构 486

25.1.1 客户层 486

25.1.2 业务逻辑层 486

25.1.3 数据层 487

25.2 理解MTS 487

25.2.1 ObjectControl_Activate 488

25.2.2 ObjectControl_Deactivate 488

25.2.3 ObjectControl_CanBePooled 488

25.3 编写MTS事务 489

25.4 配置MTS构件 491

25.5 无状态环境的重要性 492

25.5.1 状态维持限制可扩展性 493

25.5.2 使用Just-in-Time激活 493

25.6 使用MTS最大化系统性能 496

25.6.1 确定是否释放或者中止 496

25.6.2 为Web farm提供无状态性 497

第26章 其他开发平台与SQL服务器

的连接 498

26.1 Delphi的数据库模型 498

26.2 Delphi中的数据库编程 498

26.2.1 使用数据库访问控件 499

26.2.2 数据控件 500

26.2.3 在表单中使用控件 502

26.2.4 表单向导 502

26.2.5 通过代码来访问数据库 503

26.2.6 通过Delphi来管理数据库 503

26.3 PowerBuilder和Microsoft

SQL Server 503

26.3.1 连接数据库 504

26.3.2 ODBC和底层驱动的比较 504

26.3.3 连接数据库 504

26.3.4 使用PowerBuilder管理数据库 507

26.3.5 PowerBuilder数据库对象 509

26.4 Delphi和PowerBuilder, 该用

哪个 515

第27章 将SQL与Microsoft的其他产品

集成 516

27.1 将Access作为SOL Server 7的前端 516

27.1.1 创建Access项目 517

27.1.2 使用Access项目 518

27.1.3 使用Data Access Page 520

27.1.4 Microsoft SQL Server的双向

数据复制 520

27.2 在SQL Server 7中使用Excel 520

27.3 在Internet Information Server和Internet

Explorer中使用SQL Server 521

27.3.1 在服务方访问数据库 521

27.3.2 使用Internet Explorer进行客户端

数据库访问 522

27.4 与Microsoft Transaction Server

集成 522

27.4.1 MTS事务和IIS 523

27.4.2 MTS事务和SQL Server 525

27.4.3 MTS事务处理和可视化编程

工具 526

27.5 小结 527

第28章 工作调度及使用ActiveX Server

实现业务解决方案 528

28.1 使用SQL Server Agent 528

28.2 实现工作 528

28.3 T-SQL工作 529

28.4 在VBScript中运行ActiveX Server 532

28.5 综述 533

28.6 小结 533

第29章 业务解决方案的编程方针 534

29.1 基础结构 534

29.2 源代码管理 534

29.3 数据库需求 534

29.4 设计和开发 535

29.4.1 标准化 535

29.4.2 主键 535

29.4.3 Null约束 536

29.5 编程中优化性能 536

29.5.1 减少数据传输 536

29.5.2 事务中不允许用户输入 537

29.5.3 防止死锁 537

29.5.4 不要混淆OLTP和OLAP 538

29.5.5 避免耗时较长的查询 538

29.6 测试数据库应用 538

29.7 修改第三方SQL Server应用 538

29.8 小结 539

第30章 数据仓库和在线事务处理 540

30.1 SQL Server作为数据仓库 540

30.2 实现数据仓库 541

30.2.1 确定需求 541

30.2.2 设计和构造数据库 541

30.3 如何为仓库清理数据 548

30.3.1 使用数据迁移服务 548

30.3.2 使用bcp载入数据 549

30.3.3 使用存储过程载入数据 549

30.3.4 使用复制载入数据 551

30.3.5 CUBE和ROLLUP操作 553

30.3.6 批处理 558

30.4 大型查询和性能优化 558

30.4.1 查询数据 558

30.4.2 视图 560

30.4.3 存储过程 560

30.5 仓库维护任务 561

30.6 SQL Server和OLTP系统 561

30.6.1 OLTP问题 561

30.6.2 创建数据库 561

30.6.3 索引数据库 562

30.6.4 事务 563

30.6.5 锁 565

30.6.6 死锁 567

30.7 优化SQL Server作为OLTP系统 569

30.7.1 事务核对清单 569

30.7.2 配置选项 570

30.8 监视性能 571

30.8.1 内存和过程cache 571

30.8.2 输入/输出 571

30.8.3 事务配置选项 571

30.9 小结 571

第四部分 附 录

附录A Master数据库的系统表 573

附录B 所有数据库的系统表 584

附录C 常见错误信息 598