Unable to start T-SQL debugging

错误消息
无法启动 T-SQL 调试。未能附加到 SQL Server 进程


当调试器无法在 SQL Server 2005 上注册用户以进行调试时发生此错误。最可能的原因是对此 SQL 2005 实例缺少必要的权限。仅与 SQL Server 的系统管理员联系不足以解决问题;登录 Windows 的 Visual Studio 用户还必须是 SQL Server 中系统管理员角色的成员。

有关更多信息,请参见如何:设置 SQL Server 的调试权限

请参见
本节描述进行 SQL 调试所需的权限。这些权限仅指那些进行 SQL 调试所需要的权限,其他地方可能会需要其他权限。例如,若要调试以非 Windows 登录帐户用户运行的进程,该用户帐户必须是该计算机的系统管理员组的成员。有关更多信息,请参见远程调试权限。

有两个用户帐户需要考虑。

应用程序帐户是运行 Visual Studio 或客户端应用程序的用户帐户。此帐户是 Windows 用户帐户,而且必须是正在调试的 SQL Server 中 sysadmin 组的成员。

连接帐户是用于建立到 SQL Server 的连接的标识。此帐户是您在服务器资源管理器中定义连接时输入的帐户,或者是在应用程序连接到数据库时您在连接字符串中指定的帐户。此帐户可以是一个 Windows 用户帐户(使用 Windows 身份验证),在这种情况下,它与运行 Visual Studio 所使用的 Windows 帐户相同。或者,连接帐户可以是 SQL Server 登录帐户。对于 SQL Server 2005 调试,连接帐户必须是 sysadmin 角色的成员。

将 Windows 登录帐户添加为 sysadmin
已经具有 sysadmin 特权的用户必须执行以下命令:


复制
sp_addsrvrolemember 'Domain\Name', 'sysadmin'
其中,Domain\Name 表示 Windows 登录帐户。

注意 
默认情况下,运行 SQL Server 的计算机上的 Windows 管理员就是该计算机上的 SQL Server 系统管理员 (sysadmin)。


本主题适用于:

Visual Studio 版本
Visual Basic
C#
C++
J#
Web Dev

速成版






标准版






专业团队版







如果有所需的软件,则可以通过执行这些步骤启用 SQL 调试。有关更多信息,请参见软件要求。

SQL Server 可以与该应用程序所在的同一台计算机上运行,也可以在远程计算机上运行。如果仅调试 T-SQL 代码,则不需要远程设置。

若要调试远程 SQL/CLR 代码,您必须在远程 SQL Server 2005 计算机上安装远程调试监视器 (msvsmon.exe)。运行具有适当选项的 SQL Server 安装程序将安装 SQL 调试组件。

对于每个 Microsoft Visual Studio 2005 SQL Server 项目以及在调试会话中使用的数据库连接,还需要执行其他安装过程。有关进一步的信息,请参见如何:为项目启用 SQL 调试、如何:为连接启用 CLR 调试和如何:启用多层调试。

启用 SQL 调试
在 SQL Server 2005 计算机上安装远程调试监视器。有关更多信息,请参见如何:设置远程调试。

设置 SQL Server 调试权限。有关更多信息,请参见如何:设置 SQL Server 的调试权限。

如果 SQL Server 的版本是 SQL Server 2000,则在进行 SQL 调试的服务器上配置用于 SQL 调试的 DCOM。有关更多信息,请参见如何:配置 DCOM 以进行 SQL Server 2000 调试。

如果在 Windows XP Service Pack 2 上进行调试,则必须执行以下操作以配置 Internet 连接防火墙,从而允许进行远程调试。有关说明和详细信息,请参见如何:设置远程调试。

在 Visual Studio 主机上,必须将 Devenv.exe 添加到例外列表中,并打开 TCP 135 端口。

在远程 (SQL) 计算机上,必须打开 TCP 135 端口并将 sqlservr.exe 添加到例外列表中。如果域策略要求通过 IPSec 来完成网络通信,则必须打开 UDP 4500 和 UDP 500 端口。

调试 SQL Server 2005 时,不需要手动启动远程调试监视器 (msvsmon)。如果启用了 SQL/CLR 调试并单步执行,或命中断点,则调试器将自动启动该监视器。如果调试的是 SQL 2000,则有关手动启动的说明,请参见如何:运行远程调试监视器。

本主题适用于:

Visual Studio
Visual Basic
C#
C++
J#
Visual Web Developer

速成版
不适用
不适用
不适用
不适用
不适用

标准版
不适用
不适用
不适用
不适用
不适用

专业团队版
适用
适用
适用
适用
适用


SQL 调试使用分布式 COM (DCOM) 在客户端计算机和数据库服务器间通信。因此,必须配置 DCOM 以允许远程用户将调试器附加到服务器上的进程。

警告 
出于对运行 SQL Server 的计算机的安全考虑,可能需要将调试访问权限制到特定的组或用户。不要将访问权授予每个人,因为这将允许访问网络上的任何用户。由于安全模型的差异,SQL Server 2000 不检查远程调试的个别 DCOM 权限。


注意 
如果您为远程用户添加帐户以在本地 SQL Server 上调试,则除非使用 dcomcnfg.exe 添加本地用户的用户帐户,否则本地用户不能再在本地 SQL Server 上进行调试。


注意 
即使已连接到本地计算机上的 SQL Server,您可能也需要配置用于 SQL 调试的 DCOM 访问权限。


注意 
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。


Windows 2000
可能需要首先下载和安装 DCOM。如果是这样,请转到 http://www.microsoft.com/com/resources/downloads.asp 获取最新版本。

在配置 DCOM 的计算机上您必须具有管理员特权。

为 SQL 调试配置服务器上的 DCOM
在“开始”菜单上单击“运行”。

在“打开”框中,键入 dcomcnfg.exe。

单击“确定”。

出现“分布式 COM 配置属性”对话框。

单击“默认安全性”选项卡。

在“默认访问权限”中,单击“编辑默认值”按钮。

出现“注册表值的权限”对话框。如果需要访问权限的组或用户没有出现在权限列表中,则单击“添加”按钮。

在“添加用户及组”对话框的“添加名称”框中,从“名称”列表中单击需要访问权限的组或用户,或者在“添加名称”框中键入组或用户。

选定组或用户名后,在“访问类型”列表中单击“允许访问”。

单击“确定”。

如果权限列表中没有出现“SYSTEM”,请再次单击“添加”按钮。

在“添加用户及组”对话框的“添加名称”框中,从“名称”列表中选择“SYSTEM”或在“添加名称”框中键入它。

选定“SYSTEM”后,在“访问类型”列表中选择“允许访问”。

单击“确定”。

如果在该过程中更改任何设置,重新启动 SQL Server。

Windows XP
可能需要首先下载和安装 DCOM。如果是这样,请转到download site获取最新版本。

在配置 DCOM 的计算机上您必须具有管理员特权。

为 SQL 调试配置服务器上的 DCOM
在“开始”菜单上单击“运行”。

在“打开”对话框中,键入“dcomcnfg.exe”。

单击“确定”。

出现“组件服务”对话框。

在“组件服务”对话框左边的窗格中,展开“组件服务”节点并单击“计算机”。然后查找您想要配置 DCOM 的计算机。

右键单击该计算机,并在快捷菜单上单击“属性”。

在“属性”对话框中,选择“默认 COM 安全性”选项卡。

在“访问权限”下,单击“编辑默认值”。

“访问权限”对话框出现。

如果需要访问权限的组或用户没有出现在权限列表中,则单击“添加”按钮。

出现“用户、计算机或组”对话框。

在“输入对象名称来选择”框中,键入需要访问权限的组或用户的名称。

单击“确定”。

现在该用户被添加到了列表中。

如果“SYSTEM”没有出现在权限列表中,请单击“添加”。

出现“用户、计算机或组”对话框。

在“输入对象名称来选择”框中,键入“SYSTEM”。

单击“确定”。

现在“SYSTEM”被添加到了列表中。

在“访问权限”中,为您添加的每个用户选择“允许”。

单击“确定”关闭“属性”对话框。

如果在该过程中更改任何设置,重新启动 SQL Server。

猜你喜欢

转载自freellf.iteye.com/blog/1492480