排错
这部分内容给出了数据库管理员对.NET Framework设计API数据库引擎的排错和代码检查的一些指导方针。当然这不是一个完整的列表。我们还是推荐所有的开发者和数据库管理员们应该聚在一起然后制定出符合自己的一个标准。我们以当前流行的Transact-SQL标准作为出发点,来确定一些相对坏的项目的,创建一个好的项目的公认的一些注意点。
◆Lack of Set-based Operations (Loops within Loops)
那些对于SQL Server 语法并不熟悉的开发者可能不得不用一些非常复杂的语句来替代像JOIN 或者SELECT等语句。例如一个表的处理需要其他外部表的每行数据时,那么下面这种处理方式是正确的,具体代码如下:
|
它通常是被一个简单的INNER JOIN语句所替代。
这个行为在SQL Server Profiler中很容易被发现,因为其内部的循环会在服务器上产生大量的查询。
◆在CLR中的CPU-Intensive处理
一些复杂的逻辑结构在.NET Framework 语言中要比在Transact-SQL结构中更容易去处理。所以如果SQL Server 不能像中间服务器一样做一些负载平衡,那么可能会成为瓶颈。在sys.dm_clr_appdomains表中的一列可以列出有关CLR CPU消耗的检测数据。
如果按照文章前面的建议进行使用,那么这点将不是什么大问题。因此,middle-tier的迁移功能将是一个很小的代码任务。
◆例举内存中的大的对象
在SQL Server 2000中的Transact-SQL并不提供创建大对象的方法。在小的存储过程中加入大的IMAGE 或者 N/TEXT参数这一方法的能力可能是最差的。很多的内容都将作为@TABLE 变量或#TEMP 表贮存在TempDB中。然而在SQL Server 2005 的.NET Framework 运行时中就不是这个样子了,在ADO.NET数据集和用户自产收集中可以放置大的和潜在的大内存要求。你应该使用系统检测计数器来检测代内存的使用情况。因为在从开发到生产的整个过程中我们应该都可以保证代码流的稳定。
这些解决方案与在middle-tier上获得的是相似的。
◆使用分页来得到内存中的数据子集。
◆确认数据已经提交。
◆移动聚合数据替代具体的细节数据。
◆出错处理
数据库引擎.NET Framework 设计API支持不同语言的出错处理。所以出错处理是非常容易的,任一个外部操作,例如数据库,文件系统或者web服务访问,以及操作的上溢出,下溢出的处理方法都在出错处理中有预先的安装。
结合SQLContext.Pipe.ExecuteAndSend()使用RAISERROR命令可以返回SQL Server 的错误。注意在SQL Server 2005 中Transact-SQL的出错处理有了一个很大的改变。开发者应该对他们的代码使用RAISERRORS这一处理。
提供一个例外比返回错误代码对开发者来说更加有意义。因为开发者可能会忘记标记@@ERROR。
◆不安全的代码问题
数据库管理员对于UNSAFE注册代码非常难以控制。尤其是在共享实例中。因为在开发者的被允许调用非管理代码。这是一个未经授权的任务。在其他的代码安全模式下,SQL Server 只关注那些注册的程序集和仅授权级别的调用。
Unsafe代码和不可管代码在高权限下可以被完全访问。因此,在部署前应该进行一次全面的代码检查。尤其应该注意所有的参数以及SQL Server 上的连接。在部分升级时确认事务的边界。最后我们应该确任代码在服务器上不会有错误信息提示显示。
◆用户自定义类型问题
用户自定义类型使用时应特别小心。注意他的8-KB的限制,以及他们的其他限制:
◆他们将作为一个自动对象进行读写。
◆执行代码在架构级别使用,所以对于现有类型的改变的潜在花费是很高的。
Beyond SQL Server 2005
SQL Server 2005 的.NET Framework 运行时环境同时装载了Visual Studio 2005。预期的服务包和热修补并没有改变版本,然而,这对于SQL Server 未来的发展并不是一个好的设定。作为.NET Framework 的发展,未来的SQL Server 版本将会转化到可以使用这些新设备。
下面的表可以用于应用程序开发者使用SQL Server 的.NET Framework 测试应用测试。注意如果CLR不可用,查询将返回一个空的字符串。通常来说,主要的版本都需要做检查,除非只是为了测试某些特性而发布的版本。
|
在这个白皮书出版的时候,windows只能处理一个单一的.NET Framework 运行时环境。虽然这一点在今后的版本中还没有被确定。但是未来的SQL Server 版本可能有一下特性:
◆要求代码重编译 – 确定数据库管理员 和加载到SQL Server 上的源代码版本是同步的。同时使得重编译更加简单。
◆要求代码修改– 利用新的API的优势同时为现有的选项设计不当的API增加选项。管理源文件以及API使用的情况。
◆要求多个 .NET Framework运行时在SQL Server “down level” 代码检查时加载。它可以在性能开销方面提供更好的保护。
数据库管理员要管理他们公司的源代码,检测开发API的使用,还要花时间保护代码的修改。及在需要代码重写的情况下保护系统。
概要
这个白皮书从传统的数据库管理员的角度探究了SQL Server 2005 .NET 公共语言时的整合。
下面的部分提供了:
◆使用这个新的能力提供的对于处理和程序的安全以及成功部署的确定。
◆为数据库管理员 提供了更好的目录数量管理和动态管理视图查询的能力。更简单的访问对象列表,了解系统状态的信息。
◆在调试和跟踪方面为数据库管理员 提供可以发挥起最大生产力的工具集。
我们关心的问题是能否提出一个新特性并不适应的例举环境。丰富的SQL Server 2005 CLR整合使得再各种情况都可以很好的满足人们的要求。
在这篇文章中我们要学习的最重要的就是CLR整合提供了一种新的,强有力的应用程序开发工具包,以使得在许多的场景下生产力被大大提高,并且为许多企业环境提供了新的可选项。
SQL Server 2005的额外资料
在Microsoft.com, MSDN和 TechNet上的免费资料
MSDN SQL Server Developer Center
MSDN 白皮书: An Overview of SQL Server 2005 for the Database Developer
MSDN白皮书: Processing XML Showplans Using SQLCLR in SQL Server 2005
MSDN白皮书: Using CLR Integration in SQL Server 2005
MSDN白皮书: XML Support in Microsoft SQL Server 2005
MSDN白皮书: XML Options in Microsoft SQL Server 2005
MSDN白皮书: What's New in FOR XML in Microsoft SQL Server 2005
MSDN白皮书: XML Best Practices for Microsoft SQL Server 2005
MSDN白皮书: Usage Scenarios for SQL Server 2005 Native Web Services
MSDN白皮书: Managed Data Access Inside SQL Server with ADO.NET and SQLCLR
MSDN On-demand Webcasts
MSDN Live Webcasts
SQL Server 2005 Hands-On Labs
SQLCLR Hands-On Lab Manual
Microsoft SQL Server TechCenter on TechNet
其他资源
Sample Book Chapters for SQL Server 2005 是一个讲述SQL Server 2005 的书目的列表。
Hosting the .NET Runtime in Microsoft SQL Server 在 Association for Computing Machinery (www.ACM.org)上. 要想访问这些资料需要成为SIGMOD, the ACM的会员或者直接购买。
Service Oriented Database Architecture David Campbell编写, 也是在Computing Machinery (www.ACM.org). 上发表。要想访问这些资料需要成为SIGMOD, the ACM的会员或者直接购买。
更多信息:http://www.microsoft.com/sql/
(责任编辑 火凤凰 sunsj@51cto.com QQ:34067741 TEL:(010)68476636-8007)
| 共10页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 10 | ||
|
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||