存储过程调试没有新代码

存储过程调试没有新代码,第1张

1在SQL SERVER2008中调试存储过程
下面内容引自MSDN
SQL SERVER 2008的SSMS是支持单步debug的,可是在调试之前必须配置权限。
假设 SQL Server Management Studio 与 SQL Server 数据库引擎实例在同一台计算机上执行,则对于执行 Transact-SQL 调试器没有配置要求。可是,当 SQL Server Management Studio 与数据库引擎实例在不同计算机上执行时,若要执行 Transact-SQL 调试器,则必须在两台计算机上使用“Windows 防火墙”控制面板应用程序来启用程序和port例外。
在执行数据库引擎实例的计算机上,在“Windows 防火墙”中指定下面信息:
将 TCP port 135 加入�到例外列表。
将程序 sqlservrexe 加入�到例外列表。默认情况下,sqlservrexe 安装在 C:Program FilesMicrosoft SQL ServerMSSQL10实例名称MSSQLBinn 下,当中,实例名称对于默认实例为 MSSQLSERVER,对于不论什么指定的实例则为对应实例的名称。
假设域策略要求通过 IPSec 进行网络通信,还必须将 UDP port 4500 和 UDP port 500 加入�到例外列表。
在执行 SQL Server Management Studio 的计算机上,在“Windows 防火墙”中指定下面信息:
将 TCP port 135 加入�到例外列表。
将程序 ssmsexe (SQL Server Management Studio) 加入�到例外列表。默认情况下,ssmsexe 安装在 C:Program FilesMicrosoft SQL Server100ToolsBinnVSShellCommon7IDE 下。
启动 Transact-SQL 调试器的要求例如以下:
SQL Server Management Studio 必须在作为 sysadmin 固定server角色成员的 Windows 帐户下执行。
数据库引擎查询编辑器窗体必须使用 Windows 身份验证来连接,或使用作为 sysadmin 固定server角色成员的 SQL Server 身份验证登录名来连接。
数据库引擎查询编辑器窗体必须连接到 SQL Server 2008数据库引擎的实例。假设查询编辑器窗体连接到处于单用户模式下的实例,您将无法执行调试器。
我们建议在测试server上调试 Transact-SQL 代码,而不要在生产server上调试,原因例如以下:
调试是一项须要高特权的 *** 作。因此仅仅同意 sysadmin 固定server角色成员在 SQL Server 中进行调试。
当您调查多个 Transact-SQL 语句的执行时,调试会话一般会执行非常长时间。会话获取的锁(如更新锁)可能会持有非常长时间,直到终止会话或者提交或回滚事务。
启动 Transact-SQL 调试器可将查询编辑器窗体置于调试模式。在查询编辑器窗体进入调试模式时,调试器会在第一个代码行处暂停。然后,您能够单步运行代码,在特定 Transact-SQL 语句上暂停运行,并使用调试器窗体来查看当前运行状态。能够通过在“查询”工具栏上单击“调试”button,或在“调试”菜单上单击“启动调试”来启动调试器。
查询编辑器窗体会保持在调试模式下,直到查询编辑器窗体中的最后一个语句完毕或您停止调试模式。能够使用下面不论什么一种方法来停止调试模式和语句运行:
在“调试”菜单中,单击“停止调试”。
在“调试”工具栏上,单击“停止调试”button。
在“查询”菜单上,单击“取消运行查询”。
在“查询”工具栏上,单击“取消运行查询”button。
也可在“调试”菜单上单击“所有分离”,以停止调试模式,但同意剩余的 Transact-SQL 语句完毕运行。
原文>使用存储过程时,不能使用v$locked_object,因为v$locked_object只是一个数据视图,只能在数据库层面查看已锁定对象信息。而存储过程是一种复杂的SQL语句,不能使用v$locked_object显示具体信息。

看图 说话,

1

2

3

4

第四步,传入参数,确定 F10,F11 下一步。和vs 调试一样

如何在sqlserver中调试存储过程(我们公司使用的是sqlserver 2008 R2),猛地一看,和以前使用sqlserver 2000真的有很大的不同,我真晕了。
于是琢磨了一下。SQLSERVER 2005中不知因何去掉了很重要的DEBUGGER功能,要调试,必须要安装VS2005专业版或者更高版本。非常不方便。
还好,SQLSERVER 2008中这个很重要而且方便的功能又回来了。
不过,SQLSERVER 2008的调试功能和SQL2000的方法差别很大。SQL2000是在查询分析器中的对象浏览器中选中需要调试的存储过程,右键----调试---输入参数开始调试。
sqlserver2008中则完全不同,变成了必须要在SSMS中EXEC [PROCEDURE NAME] @VAR1,@VAR2,然后点绿色三角或者点菜单中的调试---启动调试。然后点工具栏的最右边的单步调试或者跳出等。下面的变量窗口和堆栈窗口等可以查看调试中变量等动态变化值。
sqlserver2008调试的要求和条件:如果在引擎所在的电脑或服务器上调试,则只需要SA或者WINDOWS用户登陆即可。如果是异地调试,则需要设置防火墙例外,增加SSMS和SQLSERVEREXE为允许,增加135端口允许通过。
总之,SQL2008的调试比2000 *** 作起来麻烦多了,要求也多了。刚开始感觉不如2000的好用,也可能是使用2000习惯了。习惯是可怕的,但是微软是在不断进步的

方法/步骤

首先在PL/SQL的左侧资源栏中展开Procedures项(图中位置1),然后再其上面的搜索框中(图中位置2)输入存过名称的关键词,按回车键搜索要调试的存过,不停的回车,直到找到想要调试的存过。

找到想要调试的存过,左键单击选中该存过(图中位置1),然后右键单击该存过,从d出菜单中选择“Test”项(图中位置2)。

单击“Test”后,PL\SQL会打开调试界面,图中位置1的按钮就是开始调试的按钮,在调试之前要填写存过的参数,位置2就是填写参数的地方,如果有多个参数,会有多行参数框,按参数名填写相应的参数即可。

填写完参数,单击开始调试按钮后,调试的界面会发生一些变化。图中位置1的变化,说明存过已经处于执行状态,别人不能再编译或者执行。位置2的按钮就是执行按钮,单击这个按钮存过会执行完成或者遇到bug跳出,否则是不会停下来的,调试时不会用这个按钮的。位置3的按钮才是关键——单步执行,就是让代码一行一行的执行,位置4的按钮是跳出单步执行,等待下一个指令。

单击“单步执行”,存过开始单步执行。界面中每一次执行的代码会高亮显示(图中位置1),如果想要看某个变量具体的值,就在位置2的地方输入该变量名,然后变量的值会显示在位置3的地方。

调试的时候,每一次单步执行的时候要记一下执行代码的行数,图中位置3的数字就是当前执行代码的行数,就是第几行。如果过程单步执行到某行后,再单步执行的时候,存过就退出,那么错误就在该行的下一行。

代码执行到24行,在往下执行时,直接转到exception的地方,也就是异常处理的部分。

这说明我们代码中的错误在24和25行上,我们打开存过,浏览到24行和25行附近,发现25行和24行使用了两个变量,记住那两个变量。重新开始调试过程。

单步的执行时候把刚才那两个变量名填写到变量查看框,一边观察变量值变化,一边单步执行,执行到24行的时候,发现一个变量已经有值了,而另一个变量的值为null。错误原因明朗了吧?就是变量没有赋值或者初始话,给该变量赋值后存过就不报错了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13333552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-16
下一篇 2023-07-16

发表评论

登录后才能评论

评论列表(0条)

保存