Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Връщане на всички деактивирани ограничения в SQL Server (пример за T-SQL)

Ето малко T-SQL код, който можете да използвате, за да получите списък с всички ограничения на CHECK и външни ключове в база данни на SQL Server.

В следващия пример правя UNION на две заявки за база данни. Една заявка sys.foreign_keys за деактивирани външни ключове, а другите заявки sys.check_constraints за деактивирани ограничения CHECK.

SELECT
  SCHEMA_NAME(schema_id) AS [Schema],
  OBJECT_NAME(parent_object_id) AS 'Table',
  name AS 'Constraint',
  type_desc,
  is_disabled, 
  is_not_trusted
FROM sys.foreign_keys
WHERE is_disabled = 1
UNION
SELECT 
  SCHEMA_NAME(schema_id),
  OBJECT_NAME(parent_object_id),
  name,
  type_desc,
  is_disabled, 
  is_not_trusted
FROM sys.check_constraints
WHERE is_disabled = 1;

Резултат:

+----------+------------------+--------------------+------------------------+---------------+------------------+
| Schema   | Table            | Constraint         | type_desc              | is_disabled   | is_not_trusted   |
|----------+------------------+--------------------+------------------------+---------------+------------------|
| dbo      | BandMember       | FK_BandMember_Band | FOREIGN_KEY_CONSTRAINT | 1             | 1                |
| dbo      | City             | FK_City_Country    | FOREIGN_KEY_CONSTRAINT | 1             | 1                |
| dbo      | MembershipPeriod | chkValidEndDate    | CHECK_CONSTRAINT       | 1             | 1                |
+----------+------------------+--------------------+------------------------+---------------+------------------+

Това са резултатите, които получавам в една от моите тестови бази данни в моята среда за разработка. Това връща всички деактивирани ограничения за външен ключ и ПРОВЕРКА в текущата база данни. За да проверите друга база данни, просто превключете към тази база данни и я стартирайте там.

Имайте предвид, че когато деактивирате ограничение, is_not_trusted флагът е настроен на 1 и ограничението се счита за ненадеждно. Когато активирате отново ограничението, имате възможност да го нулирате на доверен или да го оставите като ненадеждно. За повече информация относно възстановяването на доверието в ограничение вижте Как да възстановите доверието в ограничение за външен ключ в SQL Server и Какво трябва да знаете за С NOCHECK, когато активирате ограничение CHECK в SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Завъртане с помощта на SQL Server 2000

  2. Как може LEFT OUTER JOIN да върне повече записи, отколкото съществуват в лявата таблица?

  3. Как работи EXCEPT в SQL Server

  4. Получаване на данни с UTF-8 charset от MSSQL сървър с помощта на PHP FreeTDS разширение

  5. Статистика за входа на файл за производителност на SQL Server