| 作者 |
| (美)Papa,J |
| 丛书名 |
| 软件开发技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111076490 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书从SQL Server 7编程的各个方面深入讨论,以数百个实例和大量图表详细讲解高级T-SQL编程、SQL Server 7的最新特性、多层应用编程、数据迁移及集成、各种应用程序接口等专题。读者可以直接将这些技术运用于相应场景,获得完善稳定的高性能应用。本书是SQL Server 7高级编程人员的必备工具书,也可供SQL Server系统管理人员、数据库设计人员参考。 |
| 目录 |
| 目 录 译者序 前言 第一部分 高级编程技术 第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 |