如何调试tsql存储过程。我尝试过以下链接。
http://msdn.microsoft.com/en-us/library/ms241871(v=vs.80).aspx
但我无法达到突破点。有没有更好的调试方法。我的环境是
Sql Express 2008,Visual Studio 2010
答案 0 :(得分:2)
我发现SQL Managment studio中的调试器不可靠,因为它依赖于在数据库服务器上拥有并非总是可用的正确权限。
我使用的另一种方法是将存储的proc转换为长查询。我首先将任何参数传递给变量声明并设置它们的值。例如以下
ALTER PROCEDURE [dbo].[USP_ConvertFinancials] (@EffectiveDate datetime, @UpdatedBy nvarchar(100))
AS
BEGIN
DECLARE @PreviousBusinessDay datetime
会变成
DECLARE @Value int,
, @EffectiveDate datetime = '01-Jan-2011
, @UpdatedBy nvarchar(100) = 'System'
这允许我从顶部开始在存储过程中运行查询。当我向下浏览查询时,我可以通过简单地选择它们并从顶部重新运行查询来检查变量的值:
SELECT @Value
我还可以注释掉INSERT-SELECT语句的INSERT部分,以查看插入表和表变量的内容。
使用此方法,存储过程中的错误通常变得非常明显。一旦我正确运行查询,我可以简单地将代码复制到我的proc并重新编译。
祝你好运!答案 1 :(得分:0)
你可以尝试Sql Profiler
,它不允许像“在这一点上突破”这样的经典调试,但是会为你提供有关查询/ SP执行的每一步发生的事情的非常详细的信息。
不幸的是,Microsoft没有为它提供Express Edition
版本的Sql Server。
但是:)有一个好的(相对因为它没有提供微软的许多过滤标准)和免费替代 - SQL Server 2005/2008 Express Profiler。
答案 2 :(得分:0)
调试存储过程。
使用主存储过程在顶部进行控制,并使用多个子存储过程逐步完成工作。
根据优化,使用执行计划,SS Profiler和DTA工具。