2012-06-06 35 views
1

我正在使用PHP 5和sqlsrv数据库驱动程序。我将QueryTimeout设置为15秒,因为我反复打了很多不同的服务器,并且如果我需要停止操作并击中下一个服务器时发生超时。如何使用Sqlsrv获取上次Query的运行时间?

目前我只使用一个变量来跟踪的开始时间和结束时间,并中止,如果是我的>=的QueryTimeout,但没有任何办法让实际查询超时的SQLSRV驱动程序本身吗?我没有看到任何看起来像在list of sqlsrv functions会有帮助的东西。我希望能够获得最后一个查询的时间,而不是将每个查询包装到获取当前时间的变量中。

+0

你担心查询超时或返回连接超时?或两者? – sesser

回答

0

在黑暗中,因为我不熟悉的SQL Server,T-SQL,sqlsrv只是一个拍等

http://msdn.microsoft.com/en-us/library/ms189741.aspx

好像你可以SELECT last_elapsed_time FROM sys.dm_exec_query_stats

+0

这是(本地)数据库的另一个命中,虽然...不是一个巨大的问题,但我希望sqlsrv驱动程序有一些方法,我可以在某处使用函数/对象获取最后一次运行时间。 –

+0

它看起来不像'sqlsrv',而是'PDO'。你看过吗? –

+0

我还没有尝试过,但我的框架支持它,我会看看它是否有这样的功能 –

0

你可以使用这个:

DECLARE @start_time DATETIME, @end_time DATETIME 
SET @start_time = CURRENT_TIMESTAMP 

sql code here 

SET @end_time = CURRENT_TIMESTAMP 
SELECT DATEDIFF(ms, @start_time, @end_time) 
0

这个地方在查询的开始:

SET STATISTICS TIME ON 

当您查看输出结果时,它们将包含计时统计。 例如

SQL Server Execution Times: 
    CPU time = 47 ms, elapsed time = 109 ms. 

编辑:你必须设置SQLSRV有来无回的警告与此命令的错误:

sqlsrv_configure('WarningsReturnAsErrors', false); 

统计文本在sqlsrv_errors()

相关问题