必须配置 Windows 防火墙规则,以便在连接到数据库引擎实例(运行该实例的计算机不同于运行数据库引擎查询编辑器的计算机)时启用 Transact-SQL 调试。
配置 Transact-SQL 调试器
服务器上的防火墙规则
在运行数据库引擎实例的计算机上,使用“高级安全 Windows 防火墙”可以指定以下信息:
为 sqlservr.exe 添加入站程序规则。 对于需要支持远程调试会话的每个实例,您必须具有一个规则。
在“高级安全 Windows 防火墙”的左窗格中,右键单击“入站规则”,然后在操作窗格中选择“新建规则”。
在“规则类型”对话框中,选择“程序”,然后单击“下一步”。
在“程序”对话框中,选择“此程序路径:”,然后输入指向此实例的 sqlservr.exe 的完整路径。 默认情况下,sqlservr.exe 安装在 C:\Program Files\Microsoft SQL Server\MSSQL12.InstanceName\MSSQL\Binn 下,其中,InstanceName 对于默认实例为 MSSQLSERVER,对于任何命名实例则为相应实例的名称。
在“操作”对话框中,选择“允许连接”,然后单击“下一步”。
在“配置文件”对话框中,选择在您想要打开针对该实例的调试会话时描述计算机连接环境的任何配置文件,然后单击“下一步”。
在“名称”对话框中,键入针对此规则的名称和说明,然后单击“完成”。
在“入站规则”列表中,右键单击您创建的规则,然后在操作窗格中选择“属性”。
选择“协议和端口”选项卡。
在“协议类型:”框中选择“TCP”,在“本地端口:”框中选择“RPC 动态端口”,单击“应用”,然后单击“确定”。
添加针对 svchost.exe 的入站程序规则,以便启用从远程调试器会话的 DCOM 通信。
在“高级安全 Windows 防火墙”的左窗格中,右键单击“入站规则”,然后在操作窗格中选择“新建规则”。
在“规则类型”对话框中,选择“程序”,然后单击“下一步”。
在“程序”对话框中,选择“此程序路径:”,然后输入指向 svchost.exe 的完整路径。 默认情况下,svchost.exe 安装在 %systemroot%\System32\svchost.exe 中。
在“操作”对话框中,选择“允许连接”,然后单击“下一步”。
在“配置文件”对话框中,选择在您想要打开针对该实例的调试会话时描述计算机连接环境的任何配置文件,然后单击“下一步”。
在“名称”对话框中,键入针对此规则的名称和说明,然后单击“完成”。
在“入站规则”列表中,右键单击您创建的规则,然后在操作窗格中选择“属性”。
选择“协议和端口”选项卡。
在“协议类型:”框中选择“TCP”,在“本地端口:”框中选择“RPC 端点映射程序”,单击“应用”,然后单击“确定”。
如果域策略要求通过 IPSec 进行网络通信,还必须添加打开 UDP 端口 4500 和 UDP 端口 500 的入站规则。
客户端上的防火墙规则
在正运行数据库引擎查询编辑器的计算机上,SQL Server 安装程序或 SQL Server Data Tools 安装程序可能已将 Windows 防火墙配置为允许远程调试。
如果您在尝试打开远程调试会话时系统显示错误,则可以通过使用“高级安全 Windows 防火墙”配置防火墙规则来手动配置程序和端口例外:
为 svchost 添加程序条目:
在“高级安全 Windows 防火墙”的左窗格中,右键单击“入站规则”,然后在操作窗格中选择“新建规则”。
在“规则类型”对话框中,选择“程序”,然后单击“下一步”。
在“程序”对话框中,选择“此程序路径:”,然后输入指向 svchost.exe 的完整路径。 默认情况下,svchost.exe 安装在 %systemroot%\System32\svchost.exe 中。
在“操作”对话框中,选择“允许连接”,然后单击“下一步”。
在“配置文件”对话框中,选择在您想要打开针对该实例的调试会话时描述计算机连接环境的任何配置文件,然后单击“下一步”。
在“名称”对话框中,键入针对此规则的名称和说明,然后单击“完成”。
在“入站规则”列表中,右键单击您创建的规则,然后在操作窗格中选择“属性”。
选择“协议和端口”选项卡。
在“协议类型:”框中选择“TCP”,在“本地端口:”框中选择“RPC 端点映射程序”,单击“应用”,然后单击“确定”。
为承载数据库引擎查询编辑器的应用程序添加程序条目。 如果您需要在同一台计算机上从 SQL Server Management Studio 和 SQL Server Data Tools 都打开远程调试会话,则必须为这两者都添加一个程序规则:
在“高级安全 Windows 防火墙”的左窗格中,右键单击“入站规则”,然后在操作窗格中选择“新建规则”。
在“规则类型”对话框中,选择“程序”,然后单击“下一步”。
在“程序”对话框中,选择“此程序路径:”,然后输入以下三个值之一。
对于 SQL Server Management Studio,输入指向 ssms.exe 的完整路径。 默认情况下,ssms.exe 安装在 C:\Program Files (x86)\Microsoft SQL Server0\Tools\Binn\Management Studio 下。
对于 SQL Server Data Tools,输入指向 devenv.exe 的完整路径:
默认情况下,针对 Visual Studio 2010 的 devenv.exe 位于 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE 中。
默认情况下,针对 Visual Studio 2012 的 devenv.exe 位于 C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE 中。
您可以从用来启动 SQL Server Management Studio 的快捷方式中找到指向 ssms.exe 的路径。 您可以从用来启动 SQL Server Data Tools 的快捷方式中找到指向 devenv.exe 的路径。 右键单击该快捷方式并选择“属性”。 可执行文件和路径将在“目标”框中列出。
在“操作”对话框中,选择“允许连接”,然后单击“下一步”。
在“配置文件”对话框中,选择在您想要打开针对该实例的调试会话时描述计算机连接环境的任何配置文件,然后单击“下一步”。
在“名称”对话框中,键入针对此规则的名称和说明,然后单击“完成”。
在“入站规则”列表中,右键单击您创建的规则,然后在操作窗格中选择“属性”。
选择“协议和端口”选项卡。
在“协议类型:”框中选择“TCP”,在“本地端口:”框中选择“RPC 动态端口”,单击“应用”,然后单击“确定”。
启动调试器的要求
启动 Transact-SQL 调试器的所有尝试还必须满足以下要求:
SQL Server Management Studio 或 SQL Server Data Tools 必须在作为 sysadmin 固定服务器角色成员的 Windows 帐户下运行。
数据库引擎查询编辑器窗口必须使用 Windows 身份验证或 SQL Server 身份验证登录名(sysadmin 固定服务器角色的成员)进行连接。
数据库引擎查询编辑器窗口必须从 SQL Server 2005 Service Pack 2 (SP2) 或更高版本连接到数据库引擎实例。 如果查询编辑器窗口连接到处于单用户模式下的实例,您将无法运行调试器。
微软参考文献:https://technet.microsoft.com/zh-cn/library/cc646024.aspx