Schema

如何找到數據庫中一組表的鎖定模式?

  • October 13, 2016

Sybase 實例的數據庫中有大約 20 個表,我需要在其中找到表的鎖定模式。一旦找到鎖定模式,我需要在其他也有 20 個表的數據庫中進行比較。建構 ASE16 SP2

使用以下方法確定 ASE 數據庫中每個使用者表的鎖定模式:

SELECT TableName = CONVERT(VARCHAR(30), so.name)
   , LockScheme = CONVERT(VARCHAR(30), lockscheme(so.id))
FROM sysobjects so
WHERE so.type IN ('S', 'U');

CONVERT(VARCHAR(30), xxx)只是為了使輸出更容易在控制台會話中看到。如果您使用 GUI 工具連接到 ASE 實例,它們可能不是必需的。請注意,如果您的表名超過 30 個字元,它們將在輸出中被截斷。

在這兩種情況下執行它並簡單地比較BeyondCompare或其他一些差異工具中的輸出。

正如 Max 所建議的,添加對我有用的答案。

這是在 ASE16 SP2 版本中,

檢查數據庫對像是否具有 AllPages Lock 架構

select name 'AllPages Lock Tables', sysstat2 from sysobjects where type = 'U' and sysstat2 & 8192 = 8192 and name = **"<obj name>"**

檢查數據庫對像是否具有 DataPages Lock 架構

select name 'DataPages Lock Tables', sysstat2 from sysobjects where type = 'U' and sysstat2 & 16384 = 16384 and name = **"<obj name>"**

檢查數據庫對像是否具有 DataRows Lock 架構

select name 'DataRows Lock Tables', sysstat2 from sysobjects where type = 'U' and sysstat2 & 32768 = 32768 and name = **"<obj name>"**

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