Совместное использование базы данных проектов между коллекциями командных проектов в TFS 2010

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

Согласно Microsoft, проекты баз данных Visual Studio 2010 явно не поддерживают серверы ссылок, но вы можете взломать их с помощью переменных References и SQLCMD: http://msdn.microsoft.com/en-us/library/bb386242.aspx

Моя база данных (сама база данных) имеет соединение сервера ссылок с базой данных хранилища. Проект базы данных хранилища хранится в отдельной коллекции командных проектов.

Есть ли способ добавить проект Warehouse в качестве ссылки в мой проект?

1 ответ

Решение

В следующей статье объясняется, как использовать ссылочные переменные в проекте базы данных. http://msdn.microsoft.com/en-us/library/bb386242.aspx

Это необходимо, когда вы ссылаетесь на базу данных, которая не находится в том же решении (см. Первую диаграмму, вторую строку).

В моем случае у меня, вероятно, будут отдельные решения для каждой отдельной бизнес-среды (внутренние приложения, внешние приложения, склад и т. Д.). Каждое из этих решений будет иметь несколько баз данных. Но базы данных должны будут ссылаться на базы данных, которые не находятся в одном и том же решении (например, во внутренней БД могут быть хранимые процедуры, которые извлекают данные из внешней БД).

В этом случае, я думаю, лучшее решение - обратиться к файлу.dbschema, который создается при сборке проекта. Вы можете настроить ночную сборку для каждого проекта и сделать так, чтобы выходные данные сборки были скопированы в определенную папку общего диска. Затем вы можете указать любой проект базы данных на схему любой другой базы данных, добавив ссылку на базу данных (описанную в статье выше) в.dbschema (на общем диске) для базы данных.

Если вы хотите сделать его более сложным, вы можете изменить шаблон сборки, чтобы скопировать необходимые файлы.dbschema из результатов сборки в каждый проект и проверить их.

В случае, когда база данных не имеет проекта и активно не изменяется, необходимо создать временный проект базы данных для базы данных, чтобы можно было создать файл.dbschema. Затем встроенный файл.dbschema может быть возвращен в зависимый проект, и вам не придется генерировать его снова, если он не изменится.

Я сделаю все возможное на примере...

Проблема: Проект ABC зависит от хранилища данных и от проекта XYZ. Project XYZ находится под контролем исходного кода в соответствии с другим решением, но хранилище не находится под контролем исходного кода.

Решение:

  1. Создание ночной сборки для проекта XYZ
  2. Сконфигурируйте выходной каталог сборки, чтобы перейти на общий диск
  3. Создайте пользовательский шаблон сборки для проекта ABC, который скопирует файл XYZ.dbschema в проект ABC и отметит его
  4. В проекте ABC щелкните правой кнопкой мыши "Ссылки на базу данных" и добавьте ссылку на XYZ, указав файл XYZ.dbschema (вместо проекта базы данных XYZ, который находится за пределами решения).
  5. Создайте ссылочные переменные для проекта XYZ (не уверен, что это необходимо...)
  6. Замените ссылки на XYZ в хранимых процедурах и представлениях ссылочными переменными, которые вы создали на предыдущем шаге (не уверен, что это необходимо…)
  7. Теперь ссылки в ABC на XYZ должны разрешиться.
  8. Создать новый проект базы данных (это может быть временный, одноразовый проект)
  9. Пусть он получит определение из хранилища (щелкните правой кнопкой мыши проект и выберите "Импорт из базы данных")
  10. Постройте проект
  11. Скопируйте файл Warehouse.dbschema из вывода сборки в проект ABC
  12. В проекте ABC щелкните правой кнопкой мыши "Ссылки на базу данных" и добавьте ссылку на файл Warehouse.dbschema.
  13. Создать ссылочные переменные для склада
  14. Замените ссылки на склад ссылочными переменными
  15. Теперь ссылки в ABC на Склад должны разрешиться.

Я не знаю, будет ли это работать именно так, но это теория. Надеюсь, поможет…

Другие вопросы по тегам