来自不同数据库的表上的外键

Swe*_*ter 15 sql t-sql sql-server sql-server-2005

我在SQL Server中有两个数据库,我有一个公用表,两个数据库都是一个重要的大表,它将外键保存到其他表中.问题是Table在DatabaseA中,我需要从DatabaseB将外键引用到该表.

我知道SQL不支持跨数据库引用完整性,那么实现这一目标的最佳方法是什么?我正在考虑将两个数据库组合成一个数据库 - 除了复杂性的增加之外没有关系.

有什么建议?

A-K*_*A-K 7

如果可以的话,我会避免这样做 - 你能把两个表保存在一个数据库中并使用FK吗?

父表和子表位于不同的数据库中.

虽然在这种情况下不能使用外键,但有一些解决方法 - 您可以使用包含在检查约束中的触发器或UDF.无论哪种方式,您的数据完整性都不是完全无懈可击的:如果包含父表的数据库崩溃并从备份中恢复它,您可能很容易就会遇到孤儿.

父子关系由触发器强制执行.

触发器不会触发时有很多情况,例如:

·删除表.

·表被截断.

·嵌套和/或递归触发器的设置可防止触发器触发.

触发器也可能是不正确的.无论哪种方式,您最终都可能在数据库中遇到孤儿.


Mus*_*sis 1

以下是有关如何使用 SSIS 导入/导出向导的文章:

http://www.databasejournal.com/features/mssql/article.php/3580216/SQL-Server-2005-Import--Export-Wizard.htm

最简单的方法是将一个数据库(我会使用两个数据库中最小的一个)导出为对您来说最方便的格式,然后将其导入到另一个数据库中。只要表名都不同,就不应该出现任何问题。