摘要描述了如何使用Microsoft Visual InterDev的SQL调试器来清除Microsoft SQL Server储存过程中的错误
使用Visual InterDev清除储存过程和触发器中的错误
如果您正在使用Microsoft Visual Studio企业版Visual InterDev包含有一个SQL调试器您可以使用它象处理其他脚本或程序一样清除SQL Server储存过程和触发器中的错误但是关于如何设定SQL调试以及调试器如何执行则有些不同
对SQL调试进行设置
进行SQL设置的相关软件需求
您必须要有Visual Studio企业版
您必须要执行SQL Server 包含Server Pack 或更高版本我们建议使用版
SQL Server必须要在Microsoft Windows NT 或更高的版本上执行
您的工作站必须要执行Windows Windows Windows NT 或更高版本
要使用SQL调试您必须对服务器和工作站进行适当的设置您应该
确定已经在SQL Server中安装了SQL调试组件
建立一个在执行SQL Server计算机上有管理权限的Windows NT用户
在服务器上设置分布式组件对象模型(DCOM)以供SQL调试使用
确定客户端的DCOM设定支持SQL调试(只适用于Windows 工作站)
安装SQL服务器调试组件
SQL调试需要您安装在您的SQL Server的组件这些组件是Visual Studio Enterprise版本的一部份
安装SQL调试组件
在安装SQL Server的计算机上启动Visual Studio企业版的设置程序
安装向导根据是否已在计算机上安装服务器组件显示不同的选项
如果服务器已经安装在新增/删除选项中选择服务器应用程序及工具
如果没有安装其它的组件选择下一步直到到达提供企业设置选项的页面选择服务器应用程序和工具
如果没有安装其它组件选择下一步直到到达提供企业设置选项的页面选择服务器应用程序和工具
在下一个页面中选择启动BackOffice安装向导然后选择安装
当显示BackOffice商业方案向导时选择自定义安装然后选择下一步
继续按下一步直到看到提供一个安装组件清单的页面除了以下组件之外清除其余的组件
SQL服务器调试
MS数据访问组件
Visual InterDev服务器
按下安装
设置一个调试用户
要使用SQL调试您必须提供一个在执行SQL Server的计算机上有管理权限的Windows NT用户的帐号和密码
设置一个用户以供SQL调试使用
在服务器的Windows控制台中选择设置一个调试用户然后选择服务
选择MSSQL然后选择启动
选定登录帐号为设定值如果这个选项设置为系统帐号将之改为这个帐号以域\帐号的形式输入拥有管理权限的用户的正确域和用户帐号
如果已经改变了这个设定值重新启动SQL服务器
设置DCOM以供SQL调试使用
如果可以的话请在机器中保留一份本机副本那么就可以不需要使用DCOM来执行跨机器调试
SQL调试使用分布式组件对象模型(DCOM)以便在您的客户端计算机和数据库服务器之间通信因此必须设定DCOM以便让远程用户在调试器上附加一个处理程序
默认情况下在服务器上安装SQL Server时就会设置正确的DCOM设定值但是出于对执行SQL Server计算机的安全性的考虑您可能要限制对调试的访问
要在服务器上设定DCOM以供SQL调试使用
从服务器的Windows开始菜单选择运行然后在打开方框的提示符中键入Dcomcnfgexe
在分布式组件对象模型(Distributed COM)设置内容窗口中选择预设安全性页面在预设存取权限下选择编辑预设
如果组Everyone尚未拥有权限选择添加然后以域\帐号的形式添加一个拥有管理权限的用户的域和用户帐号
在添加了这个帐号后检查SYSTEM如果它还未出现在清单上使用添加名称和组对话框中的选取清单添加
如果已经对这个过程中描述的任何选项做了修改重新启动SQL Server
注意: 如果希望将帐号添加到远程服务器而这个帐号不能执行调试则可能该帐号的用户正在服务器计算机上执行Visual InterDev
执行SQL调试
与清除其它种类程序的错误不同不能清除储存过程或对正在执行的触发器程序您可以在编辑器中打开这个过程从那里清除错误
在数据检查窗口中在储存过程上按右键然后选择调试
编辑器会在其窗口内打开储存过程然后在调试菜单选择调试命令
在以调试模式打开编辑器窗口后您可以像平常一样使用调试器指针例如您可以在本机窗口设定断点和逐步执行过程您可以查看变量的数值您还可以将表达式拖到Watch窗口以便在逐步执行指令或执行程序使用SQL PRINT的结果显示在输出窗口中
但是SQL调试器与脚本使用的调试器有以下的不同
Auto和Immediate窗口在对储存过程调试时是没有作用的虽然您可以显示它们Auto窗口将变成空的并且Immediate窗口将不会允许您输入表达式
您可以改变执行顺序以便使用设置下一个语句指定
如果您正在使用简单的SELECT语句 ─ 那些只会返回单一数值 ─ 返回的数值是一个可以在本机窗口查看的变量然而如果SELECT语句传回一个结果集在调试器中就不会显示出来此外您可以在输出窗口查看结果集