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

AJM*_*AJM 10 sql-server security sql-server-2005

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

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

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

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

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

Fil*_*Vos 21

确实不支持跨数据库外键

    Msg 1763, Level 16, State 0, Line 2
    Cross-database foreign key references are not supported.
Run Code Online (Sandbox Code Playgroud)

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

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

      CREATE SYNONYM myTable FOR otherdatabase.dbo.myTable;
Run Code Online (Sandbox Code Playgroud)

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

  • 我在答案中添加了一句话来说清楚. (2认同)

Jer*_*ray 5

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