Schema
如何找到數據庫中一組表的鎖定模式?
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>"**