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