Sql-Server
使用標識列標識所有表
我可以執行一個查詢來顯示所有帶有標識列的表嗎?試圖找出是否有任何基於身份的表,其目前身份接近 int32 或 int64 的上限。
上有一列
sys.columns
標識標識列 (is_identity
)。此外,
IDENT_CURRENT()
您可以使用一個函式來辨識表的最近生成的標識值,以確定您是否正在接近 int max。(文件)您可以通過執行以下操作來簡單地查詢以辨識具有標識列的每個表(以及標識列是什麼):
SELECT TableName = o.name, ColumnName = c.name, IdentityCurrent = IDENT_CURRENT( o.name ) , TypeName = t.name FROM sys.objects AS o JOIN sys.columns AS c ON c.object_id = o.object_id AND c.is_identity = 1 JOIN sys.types AS t ON t.system_type_id = c.system_type_id WHERE o.type = 'U'; --User tables
您可以添加到該
WHERE
子句以添加其他條件,以僅擷取距離太近而無法舒適的表作為生成警報的基礎。