IBC*_*IBC 2 sql-server-2008 foreign-key
我正在移植一个巨大的遗留数据库,许多不同的遗留前端依赖于它。当我完成后,一个新的前端将与所有旧的遗留前端一起运行,减去我针对移植数据库替换的前端。
无论如何,遗留数据库没有定义任何外键关系。我的计划是开始将它们放入,但让它们禁用以支持旧的前端。但是,我想在某种存储过程中使用禁用的外键关系来检查数据库的完整性(我会经常将其作为完整性测试套件的一部分执行)。这是否涉及尝试打开每一个,然后记录错误消息,然后再次将其关闭?有没有一个特殊的命令可以一次性完成这一切?
您需要帮助的任何脚本都会很好,我不擅长 T-SQL。理想情况下,我希望脚本返回一个由表名、记录的主键值和失败记录的外键名称组成的表。
谢谢!
小智 5
这些DBCC CHECKCONSTRAINTS
命令可以按如下方式运行:
DBCC CHECKCONSTRAINTS (TableName)
- 检查单个表DBCC CHECKCONSTRAINTS (ConstraintName)
- 检查单个约束DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS
- 检查数据库中的所有约束DBCC CHECKCONSTRAINTS WITH ALL_ERRORMSGS
- 返回所有违反约束的行DBCC CHECKCONSTRAINTS WITH NO_INFOMSGS
- 查询运行时抑制消息DBCC CHECKCONSTRAINTS
只检查启用的约束请记住,SQL Server 需要通读所有数据以检查约束,因此请注意不要对大型或非常繁忙的数据库全面运行此操作。这应该是非工作时间运行的,而且对于非常大的数据库,您应该在表级别或约束级别运行它。