各路大侠:
    小弟需单步调试存储过程,但怎么都会报错。调试工具也装了(已经有SQLDBREG.EXE),sp_sdidebug legacy_on 也执行过了,权限也有,可还是这样。这问题已困扰小弟很多天了,各位帮帮小弟吧,先谢了。服务器: 消息 504,级别 16,状态 1,过程 sp_sdidebug,行 1
[Microsoft][ODBC SQL Server Driver][SQL Server]无法连接到 server上的调试程序(错误 = 0x80040154)。请确保已在 server上安装并注册了客户端组件(如 SQLDBREG.EXE)。已禁用对 60 的调试。

解决方案 »

  1.   

    http://moretea.cnblogs.com/articles/335705.html
    Transact-SQL 调试程序疑难解答
    本主题的目标是解决启动和使用 Transact-SQL 调试程序时可能遇到的问题。潜在的错误源包括: 错误的 DCOM 权限设置
    Windows 98 上的 DCOM
    缺少或未注册 DLL
    缺乏(或限制的)调试程序支持 
    本主题描述了如何标识和修正各种问题。在尝试解答调试程序配置的疑难问题前,请验证: 确保具有执行 SP_SDIDEBUG 扩展过程的权限。
    使用在那台计算机上有管理员特权的帐户来启动 SQL Server 服务。
    对于每一条错误信息,请检查事件查看器的应用程序和系统日志。 
    错误的 DCOM 权限设置
    SQL 调试使用分布式 COM (DCOM) 在客户机和数据库服务器之间通讯。必须配置 DCOM 使远程用户可以把调试程序附加到数据库服务器的进程上。安装 SQL Server 时,默认的 DCOM 设置就是正确的。然而,由于从运行 SQL Server 的计算机的安全角度考虑,可能想要限制调试访问权限。下面的步骤可以作为在 SQL Server 计算机上建立 DCOM 的常规过程。 重要  如果运行调试程序时,计划用户是运行 SQL Server 用户以外的任何用户,那么首先需要对 DCOM 进行正确配置。按照下面的步骤,确保有执行的权限。
    在服务器上: 运行 DCOMCNFG.EXE。
    在"分布式 COM 配置属性"窗口中,选择"默认安全"选项卡。在"默认访问权限"下,单击"编辑默认值"。
    如果"所有人"组还没有权限,可以单击"添加"将其添加进来。从"列出名称"列表中,选择本地机器名。选择"所有人",然后请确保把"访问类型"设置到"允许访问"中。然后,单击"确定"按钮。 
    或者如果希望限制让指定用户使用调试功能,那么可以添加具有管理员特权的单个域用户帐户(例如,domain\account)。如果选择只添加域帐户而不是"所有人",那么请确保同时添加"系统"帐户。切换到"分布式 COM 配置属性"对话框的"应用程序"选项卡。
    在"应用程序"列表中上下滚动,并选择"SQLDBREG"。然后单击"属性"。
    选择"标识"选项卡,并确保选择"交互式用户"作为运行该应用程序的用户。
    单击"确定"按钮关闭对话框。
    重新启动 SQL Server 服务。 
    应用上述步骤之后,服务器的 DCOM 设置应该如下所示:   DCOMCNFG
       |
       |__ Application Tab
       |   |
       |   |_____ SQLDBREG
       |      |
       |      |______ Identity Tab
       |         |
       |         |_______ The interactive user
       |
       |__ Default Security Tab
          |
          |_____ Default Access Permissions
             |
             |______ Edit Default Button
                |
                |_______ Everyone (or domain\account and System)
    Windows 98 上的 DCOM
    在 Windows 98 上的 DCOM95 不如 Windows NT 上的 DCOM 可靠。另外,如果在 Windows 98 上的 RPCSS.EXE 不是在装载解释器时或引导时启动,那么可能会造成一些问题。要确保 RPCSS.EXE 及时启动,修改下面的任一注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices按照下面的步骤在前面的任一注册表项中添加一个新的"字符串值"(可以随意命名),然后把这个值设置到"C:\WINDOWS\SYSTEM\RPCSS"中: 运行 REGEDIT.EXE。
    展开 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Run。
    右击然后选择"新建" -> "字符串值"。
    键入任意名称(例如,RPC)。
    双击新创建的字符串。
    键入相应值(例如,C:\WINDOWS\SYSTEM\RPCSS.EXE)。
    重启计算机。 
    同时确保下面的注册表键值设为"y":HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\EnableDCOM
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\EnableRemoteConnect做了上述改动之后,必须重启计算机。缺少或未注册 DLL
    如果调试程序启动失败,而且遇到如下错误信息,那么可能需要手工建立调试环境: 输出窗口中的错误(指出在 ..\mssql\binn 文件夹下缺少 mssdi98.dll) 
    ODBC:错误信息 0,级别 16,状态 1[Microsoft][ODBC SQL Server 驱动程序][SQL Server] 无法装载 DLL mssdi98.dll 或引用的 DLL 之一。原因:126(找不到指定的模块)。事件查看器/应用程序日志中的错误(指出 sqldbg.dll 未注册或 sqldbreg 未注册) 
    无法连接到 <服务器名> 上的调试程序(错误 = 0x80004002 不支持这种界面)。请确保已在 <服务器名> 上安装并注册了客户端组件(如 SQLDBREG.EXE)。连接 54 禁用调试。错误信息对话框(指出 sqldbg.dll 未注册或 sqldbreg 未注册)。 
    缺少或未注册 sdiclnt.dll初始化调试程序失败!可能原因:没有正确安装或注册"sdiclnt.dll"。当服务器和客户端(即查询分析器)在同一台计算机上运行时,按照如下步骤手工安装和注册缺少的调试程序组件: 从 SQL Server 2000 光盘的文件夹 \x86\binn 中将文件 sdiclnt.dll 复制到 c:\program files\microsoft sql server\mssql\80\tools\binn,然后执行下面的命令为其注册: 
    regsvr32 sdiclnt.dll 说明  在 Windows 9x 上,regsvr32 实用工具位于文件夹 \windows\system 下。创建文件夹 c:\program files\common files\microsoft shared\SQL Debugging。
    把下面的文件从 \x86\other\sdi 复制到 c:\program files\common files\microsoft shared\SQL Debugging 下: 
    sqldbg.dll
    sqldbreg.exe然后,注册这些文件:regsvr32 sqldbg.dll
    sqldbreg /RegServer从 \x86\other\sdi 将文件 mssdi98.dll 复制到 sqlservr.exe 所在目录下(例如,c:\program files\microsoft sql server\mssql\binn)。
    重新启动 SQL Server 服务。 
    当服务器和客户端在不同计算机上运行时,按照下面的步骤手工安装和注册缺少的调试程序组件:在客户端: 从 SQL Server 2000 光盘的文件夹 \x86\binn 将文件 sdiclnt.dll 复制到 c:\program files\microsoft sql server\mssql\80\tools\binn,然后注册: 
    regsvr32 sdiclnt.dll 说明  在 Windows 9x 上,regsvr32 实用工具位于文件夹 \windows\system 下。创建文件夹 c:\program files\common files\microsoft shared\SQL Debugging。
    把下面的文件从 \x86\other\sdi 复制到 c:\program files\common files\microsoft shared\SQL Debugging 下: 
    sqldbg.dll
    sqldbreg.exe然后,注册这些文件:regsvr32 sqldbg.dll
    sqldbreg /RegServer在服务器上: 创建文件夹 c:\program files\common files\microsoft shared\SQL Debugging。
    把下面的文件从 \x86\other\sdi 复制到 c:\program files\common files\microsoft shared\SQL Debugging: 
    sqldbg.dll然后注册以下文件:regsvr32 sqldbg.dll从 \x86\other\sdi 将文件 mssdi98.dll 复制到 sqlservr.exe 所在目录下(例如,c:\program files\microsoft sql server\mssql\binn)。
    重新启动 SQL Server 服务 
    缺乏(或限制的)调试程序支持
    对于下面的数据类型提供限制的支持: 
    表 
    这种类型的变量不在本地变量窗口中显示。sql_variant、text、ntext、image 和 cursor 
    这些类型的变量在本地变量窗口中显示,但是无法修改。不支持大于 64K 的过程。
    不支持大于 32 个存储过程调用的嵌套。
    一个存储过程的传递参数超过 1023 个则不受支持。
      

  2.   

    参看
    http://community.csdn.net/Expert/topic/4963/4963608.xml?temp=.6402857