如何:使用 SQL Server 数据库项目或服务器项目进行调试求答案

如何:使用 SQL Server 数据库项目或服务器项目进行调试求答案,第1张

有关在 C++、Visual Basic 或 C# 项目中调试 Transact-SQL 的信息,请参见调试多层数据库应用程序。在SQL Server 数据库项目或服务器项目的上下文中,每当启动调试时,调试器将始终在活动的 Transact-SQL 查询窗口中开始调试 Transact-SQL 代码。如果不希望调试整个脚本,请于开始调试之前仅在查询窗口中突出显示 Transact-SQL 代码的子集。若要调试存储过程和触发器这样的数据库对象,则需要在活动的 Transact-SQL 查询窗口中从 Transact-SQL 代码进入并单步执行这些对象。例如,如果希望调试存储过程:在调用该存储过程的 EXECUTE 语句上设置断点,在相同的 Transact-SQL 查询窗口上启动调试,然后通过单击“调试”工具栏上的“单步执行”来单步执行该存储过程。注意当使用 SQL Server 数据库或服务器项目时,Visual Studio 调试器不识别已通过服务器资源管理器设置的数据库对象上的断点。在活动的 Transact-SQL 查询窗口中调试 Transact-SQL 脚本确认已针对 Transact-SQL 调试设置了计算机。有关更多信息,请参见如何:启用 Transact-SQL 调试。启动Visual Studio,并创建新的 SQL Server 数据库项目或服务器项目。打开要用于开始调试的 Transact-SQL 脚本。还可以打开与当前项目关联或不关联的新 .sql 文件。将新的 Transact-SQL 脚本添加到项目中:在解决方案资源管理器中右击项目名称,单击“添加”,再单击“新建项”。在“添加新项”对话框中,选择“脚本”(位于“数据库项目”节点下的“用户脚本”模板中)。然后单击“添加”。若要打开与项目没有关联的新 Transact-SQL 查询窗口,请参见如何:启动 Transact-SQL 编辑器和如何:连接到 Transact-SQL 编辑器中的数据库。注意:如果没有首先打开 SQL Server 数据库项目或服务器项目,则不能调试 Transact-SQL。打开Transact-SQL 查询窗口之后,开始编写 Transact-SQL 代码(如果尚未编写)。在准备开始调试后,继续下一个步骤。在Transact-SQL 代码中放置断点,方法是在 Transact-SQL 查询窗口的左空白处单击要中断执行的代码行。通过按 F5 或打开“调试”菜单并单击“启动调试”,启动调试活动的 Transact-SQL 查询窗口。使用“调试”工具栏上的“单步执行”、“逐过程”或“跳出”按钮,在 Transact-SQL 脚本中导航调试器。还可以按 F5 继续执行,直到出现下一个断点或脚本结束。使用“局部变量”和“监视”窗口检查代码的状态。有关更多信息,请参见使用局部变量窗口和监视窗口调试 Transact-SQL 对象。当完成并准备停止调试时,请按 Ctrl+Alt+Break,或者单击“调试”工具栏上的“停止调试”。调试已部署到服务器上的 Transact-SQL 数据库对象确认已针对 Transact-SQL 调试设置了计算机。有关更多信息,请参见如何:启用 Transact-SQL 调试。启动Visual Studio,并创建新的 SQL Server 数据库项目或服务器项目。打开要用于测试 Transact-SQL 数据库对象的 Transact-SQL 脚本。还可以打开与当前项目关联或不关联的新 .sql 文件。将新的 Transact-SQL 脚本添加到项目中:在解决方案资源管理器中右击项目名称,单击“添加”,再单击“新建项”。在“添加新项”对话框中,选择“脚本”(位于“数据库项目”节点下的“用户脚本”模板中)。然后单击“添加”。若要打开与项目没有关联的新 Transact-SQL 查询窗口,请参见如何:启动 Transact-SQL 编辑器和如何:连接到 Transact-SQL 编辑器中的数据库。注意:如果没有首先打开 SQL Server 数据库项目或服务器项目,则不能调试 Transact-SQL。打开Transact-SQL 查询窗口之后,开始编写 Transact-SQL 测试代码(如果尚未编写)。调试Transact-SQL 数据库对象的唯一方法是在活动的 Transact-SQL 查询窗口中单步执行它们。在会导致执行 Transact-SQL 的测试脚本中编写 Transact-SQL 代码。若要调试存储过程,请向使用相应存储过程的测试脚本添加 EXECUTE 语句。若要调试触发器、用户定义的函数和其他可编程的 Transact-SQL 数据库对象,请在会导致代码执行的测试脚本中编写 Transact-SQL 代码。在Transact-SQL 测试脚本中放置断点,方法是在 Transact-SQL 查询窗口的左空白处单击要中断执行的代码行。若要调试已部署到 SQL Server 实例的 Transact-SQL 数据库对象,请将断点放置在会导致执行这些对象的 Transact-SQL 代码之前。在启动调试器之前,请单击 Transact-SQL 测试脚本,以确保它在 Visual Studio 中是活动的窗口。通过按 F5 或打开“调试”菜单并单击“启动调试”,开始调试 Transact-SQL 测试脚本。当调试器在断点处中断执行后,按 F8 或打开“调试”菜单并单击“单步执行”,以在 Transact-SQL 数据库对象的 Transact-SQL 代码中单步执行调试器。调试器单步执行数据库对象的 Transact-SQL 代码后,Visual Studio 将立即打开 Transact-SQL 查询窗口来显示相应的 Transact-SQL 代码。调试器单步执行 Transact-SQL 数据库对象后,即可设置其他断点,并使用“调试”工具栏上的“单步执行”、“逐过程”或“跳出”按钮在 Transact-SQL 代码中导航调试器。还可以按 F5 继续执行,直到出现下一个断点或代码结束。使用“局部变量”和“监视”窗口检查代码的状态。

存储过程(函数)的调试?可以用pgAdmin或者edb-debugger(更新2008-09-26)

pgAdmin

工具主页:http://www.pgadmin.org/ 2012-12-06 - pgAdmin v1.16.1 released

1.编辑postgresql.conf

shared_preload_libraries = '$libdir/plugins/plugin_debugger.so' 

2.重新启动数据库restart

3.执行/opt/PostgreSQL/9.1/share/postgresql/contrib/pldbgapi.sql

 

如果使用postgres-9.1.2-1.i386.openscg.rpm这个rpm包安装的数据库,执行以上3个步骤即可开启调试。

rpm -ivh postgres-9.1.2-1.i386.openscg.rpm 

 

由于我使用以下的几个rpm包安装的postgresql9.1.2,

rpm -ivh postgresql91-libs-9.1.2-1PGDG.rhel5.i386.rpm   

rpm -ivh postgresql91-server-9.1.2-1PGDG.rhel5.i386.rpm   

rpm -ivh postgresql91-9.1.2-1PGDG.rhel5.i386.rpm    

rpm -ivh postgresql91-contrib-9.1.2-1PGDG.rhel5.i386.rpm 

实际配置过程中发现,我的环境中没有plugin_debugger.so和pldbgapi.sql这两个文件。

直接把postgres-9.1.2-1.i386.openscg.rpm包安装好的so文件拿来使用,可以配置成功。需要plugin_debugger.so,targetinfo.so和pldbgapi.so(目录可能是 /opt/postgres/9.1/lib/postgresql/)这三个so文件和pldbgapi.sql文件。

进行如下 *** 作:

1.在postgresql9.1的lib目录(如:/usr/pgsql-9.1/lib/)新建plugins文件夹,拷贝plugin_debugger.so至plugins目录下

2.拷贝targetinfo.so和pldbgapi.so文件至postgresql9.1的lib目录下

3.编辑postgresql.conf

4.执行pldbgapi.sql,

psql -U postgres -h localhost -f /home/pldbgapi.sql 

5.重启数据库,配置完成

配置完成后,在pgAdmin3中,右键存储过程会出现调试中的选项,

EnterpriseDB提供的pg插件edb-debugger

工具主页:http://pgfoundry.org/projects/edb-debugger/   0.93  September 26, 2008

PG默认是不支持function调试的,要在PG里调试function得安装enterpriseDB提供的pg插件edb-debugger(PL/pgSQL Debugger. Currently requires PostgreSQL 8.2 or higher (or EnterpriseDB 8.1.4 or higher). The PL/pgSQL debugger lets you step through PL/pgSQL code, set and clear breakpoints, view and modify variables, and walk through the call stack)

    

安装edb-debugger:

1)源码方式安装pg,(这里不作详细说明,请参照我的另一篇文章)

2)下载edb-debugger

    地址:http://pgfoundry.org/projects/edb-debugger/,目前最新版本为0.92

3)解压edb-debugger到pg的源码目录下的contrib下面(我的目录:/home/lyb/postgresql-8.3.3/contrib/pldebugger),进入pldebugger目录。

4)make

5)make install

好,现在edb-debugger已经安装完成

配置pg

1)更改数据库目录下的postgresql.conf,加入如下红色语句:

#shared_preload_libraries = '' # (change requires restart)(这个系统默认下是注释掉的,在这句下面加入下面语句)

shared_preload_libraries = '$libdir/plugins/plugin_debugger'(这是新加入的)

2)重新启动pg

3)在要进行调试的数据库里执行pldbgapi.sql文件,这个文件在你pg安装目录的share/postgresql/contrib/下面

调试pg的function

1)打开pgadmin3,打开你要调试的数据库,在你要调试的function上右击,这时你会发现多了一项Debugging,占击子项中的debug就可对function进行调试了。

参考来源:

http://alpha2.blog.51cto.com/4706029/817727

http://blog.csdn.net/greatwallmy/article/details/3960112


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

原文地址: http://outofmemory.cn/sjk/10653412.html

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

发表评论

登录后才能评论

评论列表(0条)

保存