跨数据库边界的SQL Server外键 - 执行技术

时间:2011-03-02 11:10:37

标签: sql-server sql-server-2005 security

我有两个独立的SQL Server 2005数据库(在同一台服务器上)

  • 安全数据库
  • 主要应用程序数据库

  • 安全数据库有一个用户表,其中包含进行身份验证所需的所有内容。 -

  • 应用程序数据库有一个带有扩展用户详细信息的人员表。安全数据库用户表和应用程序数据库人员表之间存在1-1映射。

我想在用户和人员表之间强制执行映射。我假设外键不能跨数据库映射,因此我想知道如何强制执行关系的完整性。

2 个答案:

答案 0 :(得分:20)

确实不支持跨数据库外键

    Msg 1763, Level 16, State 0, Line 2
    Cross-database foreign key references are not supported.

如果您确实希望在数据库端强制实施参照完整性,则必须依赖触发器。 (我不推荐)

为了使您的代码更易于维护,您可以为要检查参照完整性的表创建同义词。

      CREATE SYNONYM myTable FOR otherdatabase.dbo.myTable;

这将使“手动”检查更容易,因为您无法在同义词上创建外键。

答案 1 :(得分:5)

这是很多工作,但您可以考虑将这两个数据库合并到一个数据库中。如果您希望数据库中的对象之间存在逻辑差异,则可以使用schema