查找执行存储过程的结果

时间:2014-04-29 08:08:25

标签: sql sql-server sql-server-2005 stored-procedures exec

我在SQL Server Management Studio 2005中执行了存储过程,但之后我没有检查存储过程是否成功执行。 我用下面的命令:

exec [Stored Procedure name] '[param1]' , '[param2]'

现在,我想找到:

a)如果存储过程成功执行

b)执行结果是什么

我找不到任何相关文件。 你能帮忙吗?

4 个答案:

答案 0 :(得分:0)

如果这些只是SELECT,则只能在SSMS的Result Pane或调用存储过程的应用程序中看到输出。在服务器中,将加载(缓存)记录。

要查看SQL Server内存中的缓存内容,请参阅此页面 What is cached by sql server

答案 1 :(得分:0)

这可以让您了解最后一次调用SP的时间

SELECT qt.[text] AS [SP Name], 
       qs.last_execution_time, 
       qs.execution_count AS [Execution Count] 
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.dbid = db_id() -- Filter by current database
AND qt.text LIKE '%YourSPName%'

除非SP具有WITH RECOMPILE,否则它应该在缓存中(如果正在使用它)(除非发生冲洗缓存的事情)。但是,我认为,找到返回的结果后,事实是不可能的。您可以重新执行SP并通过运行跟踪进行检查,我猜

答案 2 :(得分:0)

重写查询大概是插入/更新作为选择并输入您输入的参数。如果表上存在由存储过程更新的审计字段,则这种方式可以。否则,只要您具有所需的权限,查询dm_exec_query_stats就可以了。

答案 3 :(得分:0)

另一种方法是将sp的整个主体放入try-catch块。在尝试的末尾,insert into审核/日志表中您感兴趣的一些值(例如:scope_identity用于插入,纯文本如'Done!',一些时间戳到看看它何时运行等等。)在 catch 中,你会做同样的事情,但根据你的需要使用不同的值:ERROR_MESSAGE, ERROR_NUMBER,'发生错误!'等等。有很多方法可以“审核”存储过程,您只需要选择一个最适合您需求的方法。