入职这个公司以来,每天写的最多的就是 SQL Server 存储过程。作为一个非专业开发出身的人员,几乎每天都在摸索着前进。
写庞大存储过程的痛苦,逼得我经常去尝试一些SSMS的替代工具。昨天在尝试一款替代工具时发现 SQL 语句竟然也可以逐步调试。于是回想起SSMS也有调试菜单啊,说不定微软就给我们提供了一大杀器呢!
调试工具:
在未使用工具的蛮荒时代,我们调试存储过程都是使用 Print 语句把各种变量打印出来。
本文使用工具的是:SQL Server 2016 Management Studio 同时在 SQL Server 2012 Management Studio 测试正常。
连接的数据库版本是:SQL Server 2012
本机调试:
如果SQL Server 和SSMS工具安装在同一台服务器上,那么不用进行多余的配置直接可以使用Windows 账户或sa账户进行调试。
远程调试:
远程调试开启的前提:
①、SQL Server 服务器端配置防火墙规则。
②、SSMS运行的电脑 Windows 账户必须是SQL Server 服务器上的一个域成员,并且此成员要拥有 sysadmin 角色。
开启的步骤(参考微软官方文档 设置成功,备注地址):
①、服务器端打开“高级安全Windows防火墙”
快捷键 Win+R 输入 wf.msc 打开
打开“高级安全Windows防火墙”②、建立sqlserver.exe的入站规则
②、建立sqlserver.exe的入站规则- 在 “规则类型” 对话框中,选择 “程序”,然后单击 “下一步”。
- 在 “程序” 对话框中,选择 “此程序路径:” ,然后输入指向此实例的 sqlservr.exe 的完整路径。 默认情况下,sqlservr.exe 安装在 C:\Program Files\Microsoft SQL Server\MSSQL13.InstanceName\MSSQL\Binn 中,其中,InstanceName 对于默认实例为 MSSQLSERVER,对于任何指定的实例则为相应实例的名称。
- 在 “操作” 对话框中,选择 “允许连接”,然后单击 “下一步”。
- 在 “配置文件” 对话框中,选择在您想要打开针对该实例的调试会话时描述计算机连接环境的任何配置文件,然后单击 “下一步”。
- 在 “名称” 对话框中,键入针对此规则的名称和说明,然后单击 “完成”。
- 在 “入站规则” 列表中,右键单击您创建的规则,然后在操作窗格中选择 “属性” 。
- 选择 “协议和端口” 选项卡。
- 在 “协议类型:” 框中选择 “TCP” ,在 “本地端口:” 框中选择 “RPC 动态端口” ,单击 “应用”,然后单击 “确定”。
③、建立svchost.exe的入站规则
- 在“高级安全 Windows 防火墙”的左窗格中,右键单击“入站规则”,然后在操作窗格中选择“新建规则”。
- 在 “规则类型” 对话框中,选择 “程序”,然后单击 “下一步”。
- 在 “程序” 对话框中,选择 “此程序路径:” ,然后输入指向 svchost.exe 的完整路径。 默认情况下,svchost.exe 安装在 %systemroot%\System32\svchost.exe 中。
- 在 “操作” 对话框中,选择 “允许连接”,然后单击 “下一步”。
- 在 “配置文件” 对话框中,选择在您想要打开针对该实例的调试会话时描述计算机连接环境的任何配置文件,然后单击 “下一步”。
- 在 “名称” 对话框中,键入针对此规则的名称和说明,然后单击 “完成”。
- 在 “入站规则” 列表中,右键单击您创建的规则,然后在操作窗格中选择 “属性” 。
选择 “协议和端口” 选项卡。 - 在 “协议类型:” 框中选择 “TCP” ,在 “本地端口:” 框中选择 “RPC 端点映射程序” ,单击“应用”,然后单击 “确定”。
④、把要使用的登陆用户添加到sysadmin角色中
Paste_Image.png这样在客户端就可以使用 Windows 身份验证或者 sa 账户等属于sysadmin角色的账户登录SSMS进行调试了。
调试步骤:
SSMS调试的方法和Visual Studio中的用法极为相似。
大体分为:设置断点、逐步或逐过程运行
Paste_Image.png参考: