1

我正在使用 PHP 5 和 sqlsrv 数据库驱动程序。我将 QueryTimeout 设置为 15 秒,因为我要反复访问许多不同的服务器,如果我遇到超时,我需要停止操作并访问下一个服务器。

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

4

3 回答 3

0

因为我不熟悉 SQL Server、T-SQLsqlsrv等,所以只是在黑暗中拍摄。

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

好像可以SELECT last_elapsed_time FROM sys.dm_exec_query_stats

于 2012-06-06T13:57:27.893 回答
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)
于 2012-06-06T13:58:08.873 回答
0

将其放在查询的开头:

SET STATISTICS TIME ON

当您查看输出结果时,它们将包括时序统计信息。例如

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

编辑:您必须将 sqlsrv 设置为不使用此命令将警告作为错误返回:

sqlsrv_configure('WarningsReturnAsErrors', false);

在 sqlsrv_errors() 中返回统计信息文本

于 2014-09-01T11:40:06.520 回答