Sql-Server

使用標識列標識所有表

  • July 3, 2021

我可以執行一個查詢來顯示所有帶有標識列的表嗎?試圖找出是否有任何基於身份的表,其目前身份接近 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子句以添加其他條件,以僅擷取距離太近而無法舒適的表作為生成警報的基礎。

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