2010-04-15 50 views
0

我有一個SQL 2008服務器上的兩個數據庫。數據庫1似乎在數據庫2上的表上造成鎖定。數據庫1上沒有應該會影響數據庫2的查詢。SQL 2008表鎖定 - 無法解決爲什麼

這是正常行爲嗎?

當我查看正在運行的查詢使用此命令

SELECT sqltext.TEXT, 
req.session_id, 
req.status, 
req.command, 
req.cpu_time, 
req.total_elapsed_time/1000 [seconds] 
FROM sys.dm_exec_requests req 
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 

它告訴我儘可能多,並且說在數據庫2的命令被暫停。

我有些茫然。我應該看看爲什麼數據庫2中的表被鎖定了?

回答

1

查詢運行是無關緊要的 - 鎖可以來自DID運行並且連接/事務仍然有效的查詢(即,打開的事務,未提交/回滾),在這種情況下鎖保持原位。

你基本上要identiy:

  • 用於鎖定表的連接。
  • 命令鏈在連接中運行。

鎖發自db的操作 - 所以除非你得到一個低級別的嚴重錯誤(非常不可能出現這樣的錯誤),導致鎖產生。

+0

太好了,謝謝湯姆。你(或任何人)有什麼建議,我應該如何解決什麼連接/命令鎖定表? – 2010-04-15 13:31:05

+0

建立一個跟蹤 - 跟蹤服務器的所有命令,允許過濾。爲了連接,使用sp_lock檢查鎖並查看需要的地方;) – TomTom 2010-04-15 14:33:47

相關問題