2012-06-06 71 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()

相關問題