f SQL Server 到底有沒有query timeout 的設定 ~ 迪貝之家

SQL Server 到底有沒有query timeout 的設定

這個問題在我剛真的成為sql server 的dba時,被AP煩到一個不行,就一直來吵為什麼它的sql 語句執行會timeout,是不是你DBA設定了甚麼??
吵到最後就是,開Call給微軟,讓原廠來說話
最後給的建議都是要AP調校sql 語句
因為是client端的timeout 設定造成的
微軟技術支援也都說,sql server 沒有相應的設定可以限制sql 語句的執行時間
但我今天研究這本書的時候

Microsoft SQL Server 2012 Internals

發現....ㄝ....還真有server 端的timeout 設定阿
只是拋出的錯誤訊息可能跟AP 的exception不一樣
官方文件是這麼寫的
This topic describes how to configure the query governor cost limit server configuration option in SQL Server 2017 by using SQL Server Management Studio or Transact-SQL. The query governor cost limit option specifies an upper limit on the time period in which a query can run. Query cost refers to the estimated elapsed time, in seconds, that is required to complete a query on a specific hardware configuration. The default value for this option is 0, which sets the query governor to off. This allows all queries to run without any time limitation. If you specify a nonzero, nonnegative value, the query governor disallows execution of any query that has an estimated cost that exceeds that value.

這是我在SSMS上的測試
SET QUERY_GOVERNOR_COST_LIMIT 1
select * from your_table

query governor cost limit









從文件上的描述,會不會是SSMS這工具自身的設定,所以我改sqlcmd來測試
QUERY_GOVERNOR_COST_LIMIT










嘿~~下次可不能對AP 單位說那麼篤定的話了!!
官方文件: 

Configure the query governor cost limit Server Configuration Option