Внешние ключи SQL Server через границы базы данных-методы принудительного применения

У меня есть две отдельные базы данных SQL Server 2005 (на одном сервере)

  • база данных
  • база данных главного приложения

  • база данных безопасности имеет user таблица со всем необходимым для аутентификации. -

  • база данных приложения имеет таблица с расширенными пользовательскими данными. Существует 1-1 сопоставление между пользовательской таблицей базы данных безопасности и применение таблицы базы данных.

Я хочу применить сопоставление между Пользователем и таблицей person. Я предполагаю, что внешние ключи не могут быть сопоставлены между базами данных, поэтому мне интересно, что делать, чтобы обеспечить целостность отношений.

2 ответов


перекрестные внешние ключи базы данных действительно не поддерживаются

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

Если вы действительно хотите, чтобы обеспечить целостность данных на стороне базы данных, вам придется полагаться на триггеры. (что я не рекомендую)

чтобы сделать ваш код более обслуживаемым, вы можете создать синонимы для таблиц, в которых вы хотите проверить ссылочную целостность.

      CREATE SYNONYM myTable FOR otherdatabase.dbo.myTable;

Это было бы сделать" ручные " проверки проще, так как вы не можете создавать внешние ключи на синониме.


Это много работы, но вы можете подумать о слиянии этих двух баз данных в одну базу данных. Если вам нужна логическая разница между объектами в базе данных, вы можете использовать - схемы.