
Visual Studio与SQL Server开发指南——最优架构与实例(第7版)
《Visual Studio与SQL Server开发指南——最优架构与实例(第7版)》是2008年清华大学出版社出版的图书,作者是Vaughn.W.R.、Blackburn.P.。
基本介绍
- 书名:Visual Studio与SQL Server开发指南——最优架构与实例(第7版)
- 作者:Vaughn.W.R.、Blackburn.P.
- 译者:沈洁、杨华
- 定价:89元
- 出版社:清华大学出版社
- 出版时间:2008-09
- 装帧:平装
内容简介
Hitchhiker’sGuide系列丛书有哪些特别之处?也许了解一点过往情况有助于弄清这个问题。在20世纪80年代,我为MicrosoftUniversity(MSU)工作,主要工作内容是编撰培训材料和进行培训授课。不过,当时的技术主题(例如,OS/2和QuickBasic)现在已经过时了。当Microsoft与Sybase合作开发针对OS/2的SQLServer时,MSU和我被雇来为开发人员建立培训课程,内容包括:关係资料库设计、TSQL编程、DBLibrary编程以及其他相关主题。我负责管理并指导培训者。该课程持续了差不多5年时间——每周授课3~5天,每月授课三周。在这一过程中,所有人都对SQLServer有了更全面的了解和实践。
当MSU结束之后,我编写了首本Hitchhiker’sGuide:Hitchhiker’sGuidetoVBSQL。这本书的标题与DouglasAdam的书毫无关係——他的书带有嚮导性质(与Europeon$5aDay类似),主要针对利用VisualBasic开发SQLServer前端套用的人员。首本Hitchhiker’sGuide也帮助我获得了在VisualBasic文档小组担任创作者的工作机会。该书的第一版并没有对VisualBasic(1.0)、DBLibrary、SQLServer以及它们之间的内部关在线上製作详细介绍。很多提示和技术来自我所编写的培训教材以及与SQLServer开发人员、MSU学生的交流。虽然本书包含相当多的技术内容,但我试图通过某些使用得并不恰当的例子将相对枯燥的主题变得幽默易懂。第1版Hitchhiker’sGuide交由MicrosoftPress出版,但是MicrosoftPress更希望出版与PowerBuilder有关的书,而不是出版与DBMS(例如SQLServer)有关的书。这种想法实在很奇怪。因此,我自费出版了前三版Hitchhiker’sGuide。这些书在美国的销量非常不错,并且行销海外。我曾将这些书的着作权卖给一位香港的朋友,他使这些书在中国也有了很好的销量。遗憾的是,我从着作权中并没有获得任何回报。
每个版本的Hitchhiker’sGuide都在上一版的基础上有所发展。随着VisualBasic及SQLServer的发展与成熟,我对它们的理解也在不断扩展。每本Hitchhiker’sGuide都关注于当前最新的VisualBasic与SQLServer的接口与功能,同时,每本Hitchhiker’sGuide也对ODBC、DAO、ODBCDirect及ADO接口作出了明确定义,并说明了利用VisualBasic工具访问这些数据接口的方法。我很喜欢思考这些书是否真正将Microsoft及数据访问小组的注意力转移到使用者所面临的实际问题上。这些使用者包括我的学生、顾客以及经常保持联繫的读者。我会把针对公共问题的新方法放在下一版丛书中。这幺多年以来,我用很多时间与开发人员团体进行交流,这些交流方式包括会议、新闻组以及培训课程。如果某位读者遇见我并针对数据访问提出了更好的解决方法,那幺这个方法很可能会出现在Hitchhiker’sGuide丛书中。
最终,Hitchhiker’sGuide丛书前三版的畅销使得MicrosoftPress提出出版第4版的要求。当和出版社达成共识(由我负责所有版本的控制)之后,我同意了MicrosoftPress的出版要求。在接下来的几年中,MicrosoftPress出版了更新后的第5版和第6版。这些书都至少被翻译成8种语言,包括日语、西班牙语、法语、德语、匈牙利语、义大利语、韩语以及中文。
当MSU结束之后,我编写了首本Hitchhiker’sGuide:Hitchhiker’sGuidetoVBSQL。这本书的标题与DouglasAdam的书毫无关係——他的书带有嚮导性质(与Europeon$5aDay类似),主要针对利用VisualBasic开发SQLServer前端套用的人员。首本Hitchhiker’sGuide也帮助我获得了在VisualBasic文档小组担任创作者的工作机会。该书的第一版并没有对VisualBasic(1.0)、DBLibrary、SQLServer以及它们之间的内部关在线上製作详细介绍。很多提示和技术来自我所编写的培训教材以及与SQLServer开发人员、MSU学生的交流。虽然本书包含相当多的技术内容,但我试图通过某些使用得并不恰当的例子将相对枯燥的主题变得幽默易懂。第1版Hitchhiker’sGuide交由MicrosoftPress出版,但是MicrosoftPress更希望出版与PowerBuilder有关的书,而不是出版与DBMS(例如SQLServer)有关的书。这种想法实在很奇怪。因此,我自费出版了前三版Hitchhiker’sGuide。这些书在美国的销量非常不错,并且行销海外。我曾将这些书的着作权卖给一位香港的朋友,他使这些书在中国也有了很好的销量。遗憾的是,我从着作权中并没有获得任何回报。
每个版本的Hitchhiker’sGuide都在上一版的基础上有所发展。随着VisualBasic及SQLServer的发展与成熟,我对它们的理解也在不断扩展。每本Hitchhiker’sGuide都关注于当前最新的VisualBasic与SQLServer的接口与功能,同时,每本Hitchhiker’sGuide也对ODBC、DAO、ODBCDirect及ADO接口作出了明确定义,并说明了利用VisualBasic工具访问这些数据接口的方法。我很喜欢思考这些书是否真正将Microsoft及数据访问小组的注意力转移到使用者所面临的实际问题上。这些使用者包括我的学生、顾客以及经常保持联繫的读者。我会把针对公共问题的新方法放在下一版丛书中。这幺多年以来,我用很多时间与开发人员团体进行交流,这些交流方式包括会议、新闻组以及培训课程。如果某位读者遇见我并针对数据访问提出了更好的解决方法,那幺这个方法很可能会出现在Hitchhiker’sGuide丛书中。
最终,Hitchhiker’sGuide丛书前三版的畅销使得MicrosoftPress提出出版第4版的要求。当和出版社达成共识(由我负责所有版本的控制)之后,我同意了MicrosoftPress的出版要求。在接下来的几年中,MicrosoftPress出版了更新后的第5版和第6版。这些书都至少被翻译成8种语言,包括日语、西班牙语、法语、德语、匈牙利语、义大利语、韩语以及中文。
目录
第1章探索应用程式的体系结构 1
1.1概述 1
1.2选择正确的体系结构 1
1.3理解工具集 3
1.3.1ADO和ADO.NET的发展
历程 3
1.3.2Jet和ODBC的产生 4
1.3.3数据访问对象的产生 5
1.3.4OLEDB的产生 5
1.3.5ADO.NET的产生 6
1.4了解应用程式的设计约束 7
1.4.1影响设计的因素 8
1.4.2在实现之前进行设计 10
1.5选择正确的数据访问接口 11
1.5.1选择正确的数据访问
提供者 12
1.5.2SQLServerEverywhere 12
1.6选择正确的资料库管理系统 18
1.6.1SQLServer开销 18
1.6.2SQLServer的安全性 19
1.6.3性能 20
1.6.4多用户问题 26
1.6.5可伸缩性问题 27
1.6.6局限性问题 28
1.6.7客户端的限制 29
1.6.8伺服器的限制 30
1.6.9维护和管理 30
1.6.10管理维护任务 31
1.6.11数据恢复的重要性 31
1.6.12管理资源 35
1.7理解基本的数据访问
体系结构 36
1.7.1多层设计 36
1.7.2建立独立的应用程式 38
1.7.3基于ASPBrowser的体系
结构 49
1.7.4XMLWeb服务的
体系结构 50
1.8小结 50
第2章SQLServer的工作原理 53
2.1概述 53
2.2伺服器和版本 53
2.2.1SQLServer的并行执行 56
2.2.2SQLServerExpressEdition
简介 56
2.2.3WorkgroupEdition简介 64
2.3安装SQLServer 64
2.4运行SQLServer服务 70
2.4.1检查SQLServer服务 70
2.4.2启动SQLServer服务 72
2.5浏览SQLServer系统资料库 73
2.5.1SQLServer实例 73
2.5.2多个实例或多个资料库? 74
2.5.3用户和系统资料库 74
2.5.4创建用户资料库 76
2.5.5管理用户资料库 76
2.6理解SQLServer的安全系统 77
2.6.1SQLServer2005中的对象 78
2.6.2系列问题:SQLServer2005
对所有权的说明 81
2.6.3理解登录、用户名以及
模式 82
2.7管理SQLServer的连线 87
2.7.1理解数据访问接口的角色 88
2.7.2理解协定 88
2.7.3打开连线 89
2.7.4调试连线 92
2.7.5选择连线策略 94
2.8使用SQLQueryTool 96
2.9创建SELECT查询 98
2.9.1使用表和列的别名 100
2.9.2SELECT操作简介 101
2.9.3理解WHERE子句 101
2.9.4通过参数传递字面值 102
2.9.5减少返回的行数 103
2.9.6通过WHERE子句执行
JOIN操作 104
2.9.7处理特定类型的查询问题 108
2.10创建和查询视图 118
2.11实现业务规则 121
2.11.1实现具有扩展属性的
业务规则 122
2.11.2通过T-SQL规则、约束
和默认值实现业务规则 127
2.12User-Defined(别名)类型 129
2.13实现约束 130
2.14通过批处理档案和脚本来
管理资料库和查询 132
2.15查询最佳化器和查询计画 133
2.15.1查看和调整查询计画 133
2.15.2检查客户统计数据和
改变计画 135
2.15.3执行查询计画 138
2.16理解快取 138
2.17执行动作命令 140
2.17.1插入新行 141
2.17.2更新行 147
2.18存储过程简介 155
2.19触发器简介 157
2.19.1创建DML触发器 157
2.19.2创建DDL触发器 158
2.20通过事务来保护数据
完整性 158
2.21管理功能 159
2.21.1附加.MDF资料库档案 159
2.21.2设定AutoClose选项 161
2.21.3导入和导出数据 161
2.21.4备份SQLServer
资料库 162
2.22事务日誌的使用 163
2.23小结 163
第3章关係资料库101 165
3.1概述 165
3.2建立牢固的资料库设计基础 165
3.3理解关係资料库的正规化 167
3.4创建表、行和列 169
3.4.1SQLServer针对关係
资料库的存储方式 169
3.4.2选择正确的数据类型 178
3.5小结 183
第4章VisualStudio入门 185
4.1概述 185
4.2我的经历 185
4.3安装正确版本的
VisualStudio 186
4.3.1处理CTP或Beta版本 187
4.3.2典型的安装过程 187
4.3.3安装MSDN文档 191
4.4启动VisualStudio 192
4.5定製VisualStudio2005 193
4.5.1保存和载入自定义
的配置 195
4.5.2创建自定义的项目模板 197
4.5.3在线上配置或本地帮助 202
4.6配置伺服器(或资料库)
管理器 202
4.6.1通过ServerExplorer创建
新的资料库 203
4.6.2在代码中创建新的资料库 205
4.7创建和管理资料库连线 205
4.8通过ServerExplorer管理
资料库对象 212
4.9通过查询设计器管理查询 222
4.9.1熟悉QueryDesigner 222
4.9.2QueryDesigner窗格 223
4.9.3派生表的定义 225
4.9.4修改查询类型 225
4.9.5QueryDesigner(查询设计
器)——重述 232
4.10通过ServerExplorer来查看
同义词 233
4.11通过ServerExplorer管理
类型 234
4.12使用ServerExplorer管理
彙编 237
4.13使用ServerExplorer管理
伺服器 237
4.14小结 240
第5章用ServerExplorer管理
可执行程式 241
5.1概述 241
5.2创建和编辑存储过程 241
5.2.1比较SQLServer2005和
VisualStudio2005 242
5.2.2进入SQLServerManagement
StudioExpress 243
5.3创建新存储过程 243
5.4用RunSelection执行T-SQL 250
5.5调试存储过程 250
5.5.1针对本地实例的T-SQL
调试 251
5.5.2在存储过程中用断点调试 253
5.6在远程实例上调试存储过程 255
5.7从代码调试存储过程 258
5.8使用ServerExplorer管理
函式 260
5.9小结 268
第6章构建数据源、数据集和表
适配器 269
6.1概述 269
6.2创建YADAI的原因 270
6.3强类型数据是否重要 271
6.4什幺是数据源 272
6.5什幺是TableAdapter 275
6.6TableAdapter中缺少什幺 276
6.7创建基于资料库的数据源 277
6.8配置TableAdapter 283
6.8.1添加参数到查询中 289
6.8.2选择查询方法进行生成 291
6.9使用拖放绑定TableAdapter 294
6.9.1定製生成的UI 296
6.9.2使用SmartTag管理绑定
控制项 297
6.9.3绑定到Details 298
6.9.4绑定到自定义控制项 298
6.10不通过拖放直接使用
TableAdapter 299
6.11在DataSourceDesigner中
管理DataTable类 300
6.11.1设定DataTable属性 300
6.11.2生成的窗体代码 301
6.12在应用程式间移动数据源 301
6.13创建Web服务数据源 302
6.13.1什幺是Web服务 302
6.13.2构造一个示例Web
服务 304
6.13.3使用和测试Web服务 310
6.13.4在UI中提供Web服务
数据源 312
6.14小结 313
第7章管理数据工具和数据绑定 315
7.1概述 315
7.2漫游VisualStudioToolbox 316
7.2.1提供废弃的数据访问控制项 317
7.2.2找到正确的控制项 318
7.2.3理解ToolTray 319
7.3使用DatasetToolbox元素 319
7.4数据绑定 321
7.5使用BindingSource类 326
7.5.1使用EndEdit和CancelEdit
方法 331
7.5.2使用BindingSource类的
数据绑定 333
7.6使用BindingNavigator控制项 334
7.7使用DataGridView控制项 335
7.8使用ProgressBar控制项 337
7.9小结 338
第8章ADO.NET入门 339
8.1概述 339
8.2数据访问的挑战 339
8.3ADO.NET总览 340
8.4使用VisualStudioObject
Browser研究ADO.NET 342
8.4.1用ClassDiagram研究
ADO.NET 343
8.4.2解释名称空间 345
8.4.3对类名称的处理 346
8.4.4使用简写来定址类 346
8.5实例化ADO.NET对象 347
8.5.1理解代码的作用域 347
8.5.2理解对象实例化 349
8.5.3VisualBasic.NET中的
Using代码块 350
8.6研究System.Data.SqlClient
名称空间 351
8.7研究SqlClient名称空间 352
8.8研究System.Data名称空间 359
8.8.1解释System.Data命名
约定 359
8.8.2理解System.Data.DataSet和
DataTable对象 360
8.8.3是否使用JOIN——这是个
问题 370
8.9小结 371
第9章建立连线 373
9.1概述 373
9.2连线策略——包括安全 373
9.3配置伺服器及防火墙 375
9.4连线策略 380
9.4.1实时连线 380
9.4.2持久连线 381
9.4.3理解MARS及其含义 381
9.4.4为连线对象选择正确的
作用域 382
9.5建立连线 383
9.6编写代码创建连线 386
9.6.1什幺是ConnectionString 386
9.6.2用SqlConnectionString
Builder类创建一个
ConnectionString 386
9.6.3保护ConnectionString 388
9.6.4保存ConnectionString 388
9.6.5建立Connection对象 389
9.6.6设定伺服器名称关键字 392
9.6.7为实例设定别名 393
9.6.8重访问其他关键字 395
9.6.9配置连线池关键字的值 396
9.7理解并管理连线池 397
9.7.1监控连线池 404
9.7.2防止连线池的溢出 405
9.8为其他提供者建立
ConnectionString 406
9.9使用VisualStudio建立
ConnectionString 408
9.10(半)自动打开和关闭连线 411
9.11理解Connection属性 411
9.12使用Connection方法 413
9.13处理Connection事件 417
9.14管理Connection异常 418
9.14.1关于异常 419
9.14.2理解SqlException类 420
9.14.3处理异常 422
9.15小结 422
第10章管理SqlCommand对象 423
10.1概述 423
10.2创建SqlCommand对象 423
10.2.1理解SqlCommand
属性 424
10.2.2理解SqlCommand
方法 429
10.2.3理解SqlCommand支持
函式 433
10.3将adhoc查询集成到套用
程式中 435
10.4编码参数查询 440
10.4.1插入adhoc查询 441
10.4.2理解SqlParameter
Collection类 442
10.4.3理解SqlParameter类 444
10.5验证值的有效性 454
10.5.1编写代码验证值的
有效性 455
10.5.2处理複杂参数设计
问题 459
10.5.3理解SqLCommand
事件 462
10.6执行存储过程 462
10.6.1处理OUTPUT、
INPUT/OUTPUT和
RETURN值参数 462
10.6.2处理行集和OUTPUT
参数 464
10.7小结 466
第11章执行SqlCommand对象 467
11.1概述 467
11.2同步执行SqlCommand
对象 467
11.3了解SqlDataReader 474
11.3.1从流中取回数据 475
11.3.2从SqlDataReader流中
取回元数据 480
11.3.3设计最好的
SqlDataReader 481
11.4填充数据结构 481
11.4.1通过设计进行有效
填充 482
11.4.2如何填充 484
11.4.3填充InfoMessage讯息 485
11.4.4填充OUTPUT和
RETURN值参数 486
11.4.5用DataTableLoad方法
填充 487
11.4.6填充附加结果集 488
11.5异步取回行 491
11.6异步执行命令 493
11.6.1异步SqlCommand函式
编码 494
11.6.2等待戈多或异步操作
完成 497
11.7小结 503
第12章更新管理 505
12.1概述 505
12.2使用嚮导创建更新动作
命令 505
12.2.1CommandBuilder应该
完成的操作 506
12.2.2并发处理——更新和
插入冲突 507
12.2.3ADO.NETCommandBuilder
的工作方式 509
12.2.4编码CommandBuilder 510
12.3替代更新:使用TableAdapter
配置嚮导 512
12.3.1使用TableAdapter更新 512
12.3.2管理生成的参数 516
12.4用伺服器端逻辑进行複杂
的更新 518
12.4.1使用事件执行自己的
更新逻辑 518
12.4.2UpdateEvents的示例 520
12.4.3管理批模式更新 525
12.5通过设计或冲突管理并发 527
12.6小结 532
第13章管理SQLServerCLR
可执行程式 535
13.1概述 535
13.1.1VisualBasic.NET开发
人员的作用 535
13.1.2VisualStudio的作用 536
13.2发展CLR可执行程式技术 536
13.3CLR可执行程式适用的
场合 538
13.3.1可以或应该构建的可
执行程式类型 539
13.3.2预览示例 540
13.4设计CLR可执行程式 542
13.5构建第一个CLR可执行
程式 542
13.6构建并部署一个CLR
可执行程式 548
13.6.1準备部署一个CLR
可执行函式 548
13.6.2部署过程 552
13.7建立测试环境 554
13.7.1在T-SQL中定址CLR
函式 555
13.7.2评价CLR可执行程式
的性能 558
13.7.3创建表值函式 560
13.8在CLR可执行程式中处理
ADO.NET 563
13.8.1使用上下文连线 563
13.8.2管理事务 565
13.8.3查询数据 565
13.8.4返回数据和讯息 565
13.9编码CLR存储过程 565
13.9.1构建CLR存储过程的
示例 567
13.9.2测试CLR存储过程 573
13.9.3研究余下的CountWords
示例 574
13.9.4评价CLR和T-SQL的
性能 575
13.10实现基本的用户定义类型
CLR可执行程式 577
13.10.1编码CLRUDT 578
13.10.2调试CLRUDT 585
13.10.3使用SELECT查询
UDT数据 587
13.10.4为提高性能调整
自己的UDT 588
13.10.5引用并更新UDT值 589
13.10.6单步调试UDT代码 591
13.10.7验证自己的UDT
数据 593
13.10.8实现UDT方法 594
13.11实现高级CLR用户定义
的类型 595
13.11.1用户自定义串列化 596
13.11.2构建iTypCurrencyV2
UDT 597
13.11.3测试typICurrencyV2
UDT 602
13.12访问CLRUDT的其他
方式 602
13.12.1引用UDT 603
13.12.2实例化UDT变数 604
13.12.3浏览LoanRequest
代码 605
13.13实现CLR聚集可执行
程式 606
13.13.1什幺是聚集 607
13.13.2CLR聚集示例 607
13.13.3测试CLR聚集 612
13.14实现CLR触发器 612
13.14.1构建CLR触发器 613
13.14.2访问INSERTED和
DELETED伪表 614
13.14.3处理更新 615
13.15高级调试 616
13.16UDT安全和IP安全 617
13.16.1提供自己的智慧型
属性 619
13.16.2保护自己的智慧型
属性 619
13.17小结 620
第14章创建并管理报表 621
14.1概述 621
14.2理解报表服务和RDL 622
14.3VisualStudio2005报表 626
14.4VisualStudio2005报表
工具的内容 627
14.5构建自己的第一个报表 628
14.5.1创建报表数据源 629
14.5.2展示报表 631
14.5.3配置ReportViewer控制项 634
14.5.4测试报表 635
14.5.5完善报表 636
14.6深入研究ReportViewer 640
14.6.1ReportViewer属性 640
14.6.2ReportViewer的方法 642
14.6.3ReportViewer事件 642
14.6.4LocalReport类 643
14.6.5ServerReport类 644
14.7管理伺服器报表 644
14.7.1呈现伺服器报表 645
14.7.2管理伺服器报表参数 646
14.7.3重新设定参数值 649
14.7.4有趣的ServerReport
参数 649
14.7.5有趣的ServerReport
方法和函式 650
14.8管理参数 650
14.8.1捕获参数 651
14.8.2报表参数 656
14.9高级报表技术 658
14.9.1管理单击报表 658
14.9.2使用SubReport
报表项 662
14.9.3RDLC的组成 664
14.9.4将RDL转换为RDLC 665
14.10实现Matrix报表 666
14.10.1报表的数据考虑 666
14.10.2初始选择查询 667
14.10.3数据分组 668
14.10.4绑定Matrix报表 670
14.11小结 679
第15章本书总结 681
附录I安装示例和测试资料库 683
I.1安装示例 683
I.2安装示例资料库 683
I.2.1附加示例资料库 684
I.2.2为实例创建别名 685
I.3特定章节的配置问题 686
I.3.1第8章:ADO.NET入门 686
I.3.2第13章:管理CLR可执行
档案 686
I.4小结 687
附录II重新安装DACW和Visual
Studio中没有的其他功能 689
附录III监控SQLServer 691
III.1用SQLProfiler监控
SQLServer 691
III.1.1添加过滤条件 691
III.1.2配置SQLProfiler 692
III.1.3开始追蹤 694
III.1.4评估追蹤 695
III.1.5一些SQLProfiler提示 695
III.2用性能计数器监控SQL
Server和ADO.NET 696
III.3小结 700
附录IV创建并管理伺服器端游标 701
IV.1伺服器端游标重要的原因 701
IV.2ADO.NET如何实现游标 702
IV.3如何管理伺服器端游标 702
IV.4ADO.NET如何创建伺服器
端游标 704
IV.4.1打开、关闭和重新打开
连线 704
IV.4.2创建游标 704
IV.5从游标取回数据 705
IV.6更新伺服器端游标 708
IV.7小结 708