T-SQL Список, к каким таблицам / столбцам привязаны правила - PullRequest
0 голосов
/ 06 июня 2018

У меня есть старая база данных SQL Server с некоторыми определенными правилами.Я могу получить список правил, используя:

select name
from sys.objects so
where so.type_desc = 'rule'

Я пытаюсь удалить каждое из этих правил в отдельности, используя следующее утверждение:

DROP RULE [dbo].[my_rule]

Но я получаюследующее сообщение об ошибке: -

Сообщение 3716, уровень 16, состояние 1, строка 2
Правило 'dbo.my_rule' не может быть удалено, поскольку оно связано с одним или несколькими столбцами.

Мне нужен запрос T-SQL для проверки системных таблиц, чтобы получить список столбцов, с которыми связаны мои правила.Спасибо.

1 Ответ

0 голосов
/ 06 июня 2018

Мне нужен запрос 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;
...