每当标识列数据类型值即将达到其最大限制时,SQL Server 就会发出警报机制

1 sql-server

我只想监视每当标识列数据类型值即将达到其最大限制时它会在何处引发警报。

\n

例如,我有一个“A”表,该表具有Id包含 2,147,483,000 行的整数标识。众所周知,SQL Server 整数限制为 +-2,147,483,647

\n

整数Id标识列即将达到其最大限制。

\n

我尝试使用 max(整数数据类型) 函数查询所有数据库表,并与自己的限制进行比较。但这是相当昂贵的。

\n

我需要标识列数据类型的列表及其表名,该值即将达到其最大限制。

\n

\xc4\xb0s 有任何方法可以做到这一点,例如自动通知的内置警报机制,或者我需要创建一个使用 max 函数查询表的作业等。

\n

mar*_*c_s 8

您应该能够很容易地从sys.identity_columns系统目录视图中获取该信息。

尝试像这样的查询:

SELECT 
    TableName = t.Name,
    IdColumnName = ic.name,
    IdColumnType = ty.name,
    ic.seed_value,
    ic.increment_value,
    ic.last_value
FROM 
    sys.identity_columns ic
INNER JOIN
    sys.tables t ON t.object_id = ic.object_id
INNER JOIN
    sys.types ty ON ty.user_type_id = ic.user_type_id
Run Code Online (Sandbox Code Playgroud)

并在这里得到结果:

TableName 列名 Id列类型 种子值 增量值 最后一个值
地区模型 ID 整数 1 1 3
活动 活动ID 整数 1000 1 1002
制造商 ID 整数 1 1 4
ID 整数 1 1 9
销售 ID 整数 1 1 9
国家 国家ID 整数 1 1 18
最小人 ID 整数 1 1 13

您可以轻松地安排此查询定期运行,并在last_value超过您可以定义的阈值时标记警告。

阅读值得信赖的 Microsoft 官方文档sys.identity_columns中的所有内容

  • 如果答案有用,@steakburgerr,您应该使用投票功能,因为评论可以被删除(尤其是对话评论)。[当有人回答我的问题时我该怎么办?](https://stackoverflow.com/help/someone-answers) (7认同)
  • @ThomA - 投票需要 15 名代表。Steakburgerr有1.不过你可以接受答案! (2认同)