Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Sqlsrv获取最后一个查询的运行时?_Php_Sql Server - Fatal编程技术网

Php 如何使用Sqlsrv获取最后一个查询的运行时?

Php 如何使用Sqlsrv获取最后一个查询的运行时?,php,sql-server,Php,Sql Server,我正在使用PHP5和sqlsrv数据库驱动程序。我将QueryTimeout设置为15秒,因为我重复访问了许多不同的服务器,如果我遇到一次超时,我需要停止操作并访问下一个服务器 目前,我只是使用一个变量来跟踪开始时间和结束时间,如果>=MyQueryTimeout,则中止,但是有没有办法从sqlsrv驱动程序本身获取实际的查询时间?我没有看到任何看起来对未来有帮助的东西。我希望能够获得最后一个查询的时间,而不是将每个查询包装在获取当前时间的变量中。这只是一个偶然的机会,因为我不熟悉SQL Ser

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


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

这只是一个偶然的机会,因为我不熟悉SQL Server、T-SQL、sqlsrv等

似乎您可以从sys.dm\u exec\u query\u stats中选择上次运行时间,您可以使用:

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)

将其放在查询的开头:

SET STATISTICS TIME ON
查看输出结果时,它们将包括计时统计信息。 e、 g

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

sqlsrv_configure('WarningsReturnAsErrors', false);

统计文本返回到sqlsrv_errors中,这是本地数据库的又一个问题……这不是一个大问题,但我希望sqlsrv驱动程序能以某种方式获得某个函数/对象的上次运行时间。它看起来不像sqlsrv,但PDO可能会。你研究过了吗?我没有试过,但我的框架支持它,我会看看它是否有这样的功能,你担心查询超时或连接超时吗?或者两者都有?
sqlsrv_configure('WarningsReturnAsErrors', false);