Внешние ключи SQL Server за пределами базы данных - методы для обеспечения соблюдения - PullRequest
9 голосов
/ 02 марта 2011

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

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

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

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

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

Ответы [ 2 ]

20 голосов
/ 02 марта 2011

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

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

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

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

      CREATE SYNONYM myTable FOR otherdatabase.dbo.myTable;

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

5 голосов
/ 02 марта 2011

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

...