2012-08-09 69 views
0

我正在寻找一种有效的方法来调试复杂和冗长的T-SQL。我已经找到了这个http://msdn.microsoft.com/en-us/library/ms241871%28v=vs.80%29.aspx的MSDN建议,但是当我设置断点时,它会回显“断点当前不会被命中,没有符号被加载到这个文档中。”配置设置为调试而不是发布。我正在运行Visual Studio 2010专业版。TSQL调试问题

+0

一个选择是使用sql profiler。 – JonH 2012-08-09 16:03:36

+0

一个方便的技术是在将代码或其中的一小部分包装在'BEGIN TRANSACTION' /'ROLLBACK TRANSACTION'中之后,在SSMS中运行代码或其部分。可能仍有副作用,例如身份值可能被跳过。这不应该是一个问题。 – HABO 2012-08-09 17:52:21

回答

0

您可以使用Management Studio来调试您的T-SQL脚本,除非它涉及自定义CLR组件。不要使用Visual Studio来附加到sqlservr.exe。

+0

这不需要SA权限吗? – PMOrion 2012-08-09 21:49:45

+0

你足够强大,可以搞砸sqlservr.exe,但你担心SA权限? – 2012-08-09 22:13:23

+0

弄乱Sqlservr.exe?我只是简单地遵循MSDN发布附加一个进程,并使用VS调试器;从进程ID的运行列表中选择它。我没有SA管理权限,但仍需要调试我正在构建的T-Sql。 – PMOrion 2012-08-15 14:50:50

0

这是一种非最佳建议,但可能有帮助。

在PROC顶部声明一个@Debug BIT参数,将其设置为1,然后添加一些

IF @Debug = 1 
    SELECT 'Debug statement blahblah' //or report something useful for debugging 

这确实有些改变PROC但是这种技术已经在过去有用,特别是冗长而复杂的特效。