T-SQL列表哪些表/列具有绑定到它们的规则

时间:2018-06-05 21:50:48

标签: sql-server tsql rules

我有一个旧的SQL Sever数据库,其中定义了一些规则。我可以使用以下方法获取规则列表:

time.sleep(randint(num1, num2) * 0.02)

我正在尝试使用以下语句单独删除这些规则:

t.speed(randint(num1, num2))

但是我收到以下错误消息: -

  

Msg 3716,Level 16,State 1,Line 2
  无法删除规则“dbo.my_rule”,因为它绑定到一个或多个列。

我需要的是一个T-SQL查询来检查系统表,以便为我提供我的规则所绑定的列的列表。感谢。

1 个答案:

答案 0 :(得分:0)

  

我需要的是一个T-SQL查询来检查系统表,以便为我提供我的规则所绑定的列的列表。

您可以使用sys.columns

┌────────────────┬───────────┬────────────────────────────────────────────────┐
│  Column name   │ Data type │                  Description                   │
├────────────────┼───────────┼────────────────────────────────────────────────┤
│ rule_object_id │ int       │ ID of the stand-alone rule bound to the column │
│                │           │ by using sys.sp_bindrule.                      │
│                │           │ 0 = No stand-alone rule.                       │
│                │           │ For column-level CHECK constraints             │
└────────────────┴───────────┴────────────────────────────────────────────────┘

并查询:

SELECT *
FROM sys.columns c
JOIN sys.objects o
  ON o.type_desc = 'RULE'
 AND c.rule_object_id = o.object_id;