必须配置 Windows 防火墙规则,以便在连接到 Transact-SQL 实例(运行该实例的计算机不同于运行 数据库引擎 查询编辑器的计算机)时启用 数据库引擎 调试。
此功能适用于 SSMS 版本17.9.1 和更早版本。
配置 Transact-SQL 调试器
Transact-SQL 调试器包括服务器端和客户端组件。 服务器端调试器组件与 SQL Server 2005 (9.x) Service Pack 2 (SP2) 或更高版本中的每个数据库引擎实例一起安装。 包括客户端调试器组件:
在从 SQL Server 2008 或更高版本安装客户端工具时。
在安装 Microsoft Visual Studio 2010 或更高版本时。
在从 Web 下载安装 SQL Server Data Tools (SSDT) 时。
如果 Transact-SQL 或 SQL Server Management Studio 与 SQL Server Data Tools 实例在同一台计算机上运行,则对于运行 SQL Server 数据库引擎调试器没有配置要求。 但是,要在 Transact-SQL 调试器连接到 数据库引擎的远程实例时运行此调试器,必须在两台计算机上的 Windows 防火墙中启用程序和端口规则。 这些规则可通过 SQL Server 安装程序创建。 如果您在尝试打开远程调试会话时系统显示错误,则请确保在您的计算机上定义以下防火墙规则。
使用 “高级安全 Windows 防火墙” 应用程序管理防火墙规则。 在 Windows 7 和 Windows Server 2008 R2中,打开 “控制面板” ,打开 “Windows 防火墙” ,然后选择 “高级设置” 。 在 Windows Server 2008 R2 中,您还可以打开 “服务管理器” ,在左侧的窗格中展开 “配置” ,然后展开 “高级安全 Windows 防火墙” 。
注意
在“Windows 防火墙”中启用规则可能会导致您的计算机暴露在防火墙在设计上可以阻止的安全风险之中。 为远程调试启用规则将取消阻止在本主题中列出的端口和程序。
服务器上的防火墙规则
在运行 数据库引擎实例的计算机上,使用 “高级安全 Windows 防火墙” 可以指定以下信息:
为 sqlservr.exe 添加入站程序规则。 对于需要支持远程调试会话的每个实例,您必须具有一个规则。
在“高级安全 Windows 防火墙” 的左窗格中,右键单击“入站规则” ,然后在操作窗格中选择“新建规则” 。
在 “规则类型” 对话框中,选择 “程序” ,然后单击 “下一步” 。
在 “程序” 对话框中,选择 “此程序路径:” ,然后输入指向此实例的 sqlservr.exe 的完整路径。 默认情况下,sqlservr.exe 安装在 C:Program FilesMicrosoft SQL ServerMSSQL13.InstanceNameMSSQLBinn 中,其中, InstanceName 对于默认实例为 MSSQLSERVER,对于任何指定的实例则为相应实例的名称。
在 “操作” 对话框中,选择 “允许连接” ,然后单击 “下一步” 。
在 “配置文件” 对话框中,选择在您想要打开针对该实例的调试会话时描述计算机连接环境的任何配置文件,然后单击 “下一步” 。
在 “名称” 对话框中,键入针对此规则的名称和说明,然后单击 “完成” 。
在 “入站规则” 列表中,右键单击您创建的规则,然后在操作窗格中选择 “属性” 。
选择 “协议和端口” 选项卡。
在 “协议类型:” 框中选择 “TCP” ,在 “本地端口:” 框中选择 “RPC 动态端口” ,单击 “应用” ,然后单击 “确定” 。
添加针对 svchost.exe 的入站程序规则,以便启用从远程调试器会话的 DCOM 通信。
在“高级安全 Windows 防火墙” 的左窗格中,右键单击“入站规则” ,然后在操作窗格中选择“新建规则” 。
在 “规则类型” 对话框中,选择 “程序” ,然后单击 “下一步” 。
在 “程序” 对话框中,选择 “此程序路径:” ,然后输入指向 svchost.exe 的完整路径。 默认情况下,svchost.exe 安装在 %systemroot%System32svchost.exe 中。
在 “操作” 对话框中,选择 “允许连接” ,然后单击 “下一步” 。
在 “配置文件” 对话框中,选择在您想要打开针对该实例的调试会话时描述计算机连接环境的任何配置文件,然后单击 “下一步” 。
在 “名称” 对话框中,键入针对此规则的名称和说明,然后单击 “完成” 。
在 “入站规则” 列表中,右键单击您创建的规则,然后在操作窗格中选择 “属性” 。
选择 “协议和端口” 选项卡。
在 “协议类型:” 框中选择 “TCP” ,在 “本地端口:” 框中选择 “RPC 端点映射程序” ,单击 “应用” ,然后单击 “确定” 。
如果域策略要求通过 IPSec 进行网络通信,还必须添加打开 UDP 端口 4500 和 UDP 端口 500 的入站规则。
客户端上的防火墙规则
在正运行 数据库引擎 查询编辑器的计算机上,SQL Server 安装程序或 SQL Server Data Tools 安装程序可能已将 Windows 防火墙配置为允许远程调试。
如果您在尝试打开远程调试会话时系统显示错误,则可以通过使用 “高级安全 Windows 防火墙” 配置防火墙规则来手动配置程序和端口例外:
为 svchost 添加程序条目:
在“高级安全 Windows 防火墙” 的左窗格中,右键单击“入站规则” ,然后在操作窗格中选择“新建规则” 。
在 “规则类型” 对话框中,选择 “程序” ,然后单击 “下一步” 。
在 “程序” 对话框中,选择 “此程序路径:” ,然后输入指向 svchost.exe 的完整路径。 默认情况下,svchost.exe 安装在 %systemroot%System32svchost.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 Server130ToolsBinnManagement Studio 下。
对于 SQL Server Data Tools ,输入指向 devenv.exe 的完整路径:
默认情况下,针对 Visual Studio 2010 的 devenv.exe 位于 C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDE 中。
默认情况下,针对 Visual Studio 2012 的 devenv.exe 位于 C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDE 中。
您可以从用来启动 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 身份验证来连接,或使用作为 sysadmin 固定服务器角色成员的 SQL Server 身份验证登录名来连接。
数据库引擎 查询编辑器窗口必须从 数据库引擎 Service Pack 2 (SP2) 或更高版本连接到 SQL Server 2005 (9.x) 实例。 如果查询编辑器窗口连接到处于单用户模式下的实例,您将无法运行调试器。
服务器需要通过 RPC 回复客户端通信。 运行 SQL Server 服务的帐户必须具有对客户端的身份验证权限
https://docs.microsoft.com/zh-cn/sql/ssms/scripting/configure-firewall-rules-before-running-the-tsql-debugger?f1url=%3FappId%3DDev15IDEF1%26l%3DJA-JP%26k%3Dk(vs.debug.error.sqlde_register_failed);k(DevLang-TSQL)%26rd%3Dtrue&view=sql-server-ver15