0
有沒有什麼辦法可以配置SQL Server 2008來殺死一個事務,如果它既沒有被取消也沒有被提交一段時間? (說電源,網絡連接或其他任何被切斷到計算機打開它。)幾分鐘後殺死SQL Server事務
要麼它會自動發生一些定義的規則集之後,或通過制定和調用命令行應用程序查詢SQL服務器的活動事務+他們一直在運行......然後指示SQL Server關閉那些「凍結」的對象。
有沒有什麼辦法可以配置SQL Server 2008來殺死一個事務,如果它既沒有被取消也沒有被提交一段時間? (說電源,網絡連接或其他任何被切斷到計算機打開它。)幾分鐘後殺死SQL Server事務
要麼它會自動發生一些定義的規則集之後,或通過制定和調用命令行應用程序查詢SQL服務器的活動事務+他們一直在運行......然後指示SQL Server關閉那些「凍結」的對象。
從here引用蓋爾肖:
SQL Server不能查詢時間出,連接應用程序(在這種情況下,查詢分析器)一樣。
無論您用於連接的技術(ADO等)都可能有連接超時和執行超時屬性,您可以在您的調用代碼中進行更改。默認值通常是30秒。
你可以潛在包裹像這樣的循環中殺死每個有問題的SPID:
select datediff(second, last_batch, getdate()) as secs_running, *
from sys.sysprocesses
where hostname != ''
and open_tran = 1
有可能會是如何最好地發現哪些進程是「安全的」殺死許多意見,我當然會有點擔心自動根據任意時間間隔來做這樣的事情。我也不確定在這個過程中所做的任何數據更改是guaranteed to be rolled-back。
感謝您的回答。我將保留它作爲最後的手段:) – Tom 2012-04-12 13:48:47
所做的更改將回滾,因爲任何正在處理中的事務在被終止時都會被回滾。鏈接的問題是在沒有包含交易的情況下進行許多單獨的刪除 - 因此已經完成的交易未受影響。 – 2015-08-17 16:13:43