Sql-Server

帶有 waitresource 數據庫的 SQL Server 阻塞報告

  • March 9, 2017

我們最近在我們的一台伺服器上發生了一些意外的塊。我們擷取了阻塞程序報告,他們將 waitresource 顯示為 waitresource=“DATABASE: 12:0”。以下是其中一份報告的範例。

<blocked-process-report monitorLoop="45476">
<blocked-process>
 <process id="process7db4d70c8" taskpriority="0" logused="10000" waitresource="DATABASE: 12:0 " waittime="24750" schedulerid="4" kpid="4556" status="suspended" spid="96" sbid="0" ecid="0" priority="0" trancount="0" lastbatchstarted="1900-01-01T00:00:00" lastbatchcompleted="1900-01-01T00:00:00" lastattention="1900-01-01T00:00:00" clientapp="App1" hostname="ServerMainFrame.domain.COM" hostpid="0" loginname="LoginA" isolationlevel="read committed (2)" xactid="0" currentdb="1" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
  <executionStack />
  <inputbuf>
  </inputbuf>
 </process>
</blocked-process>
<blocking-process>
 <process status="suspended" waitresource="DATABASE: 12:0 " waittime="24998" spid="150" sbid="0" ecid="0" priority="0" trancount="0" lastbatchstarted="1900-01-01T00:00:00" lastbatchcompleted="1900-01-01T00:00:00" lastattention="1900-01-01T00:00:00" clientapp="Microsoft JDBC Driver for SQL Server" hostname="Server02.domain.com" hostpid="0" loginname="loginA" isolationlevel="read committed (2)" xactid="0" currentdb="1" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
  <executionStack />
  <inputbuf>
  </inputbuf>
 </process>
</blocking-process>
</blocked-process-report>

我什至不確定這可能是一個 waitresource 或確定它的含義。通常,我看到的 waitresource 是表、頁、行等。顯而易見的是,數據庫上有一個鎖,沒有任何東西可以使用它,但不確定會發生什麼。可能是鎖升級?所以我的問題是,是否有人可以幫助了解這個 waitresource 是什麼以及可能導致它的原因。

在我查看正在發生的活動之前,該問題已得到解決,因此只需繼續執行阻止報告即可。我嘗試用​​Google搜尋,但找不到任何關於此的資訊。任何幫助或指向將提供幫助的資源的指針表示讚賞

發現問題。有幾個鏡像數據庫大約在同一時間故障轉移到輔助數據庫。我必須通過大量的塊報告才能找到這個。當發送故障轉移的命令發生時,它會鎖定數據庫,阻止任何東西使用它。當時正在執行的其他幾件事創建了一系列額外的塊。我看到的是額外的塊,而不是開始一切的原始塊。

這是正在執行的命令 -

USE [master];ALTER DATABASE [DBName] SET PARTNER FAILOVER

似乎這會顯示在 sys.dm_tran_locks 表中,但事實並非如此。此外,如果我們的監控工具當時正在工作,它可能會更容易辨識。

MSDN sys.dm_tran_locks文件顯示了資源和資源子類型的列表,包括影響數據庫鎖定的那些:

BULKOP_BACKUP_DB 具有批量操作的數據庫備份。
BULKOP_BACKUP_LOG 具有批量操作的數據庫日誌備份。
CHANGE_TRACKING_CLEANUP 更改跟踪清理任務。
CT_DDL 數據庫和表級更改跟踪 DDL 操作。
CONVERSATION_PRIORITY Service Broker 會話優先級操作,例如
作為創建代理優先級。
DDL 數據定義語言 (DDL) 操作
文件組操作,例如 drop。
ENCRYPTION_SCAN TDE 加密同步。
PLANGUIDE 計劃指南同步。
RESOURCE_GOVERNOR_DDL 資源管理器操作的 DDL 操作,例如
作為 ALTER RESOURCE POOL。
SHRINK 數據庫收縮操作。
STARTUP 用於數據庫啟動同步。

引用自:https://dba.stackexchange.com/questions/166596