Совместное использование базы данных проектов между коллекциями командных проектов в TFS 2010 - PullRequest
1 голос
/ 17 ноября 2011

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

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

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

Можно ли добавить проект хранилища в качестве ссылки в моем проекте?

1 Ответ

1 голос
/ 30 января 2012

В следующей статье объясняется, как использовать ссылочные переменные в проекте базы данных.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. Создайте новый проект базы данных (это может быть временный, одноразовый проект)t)
  9. Получить его из хранилища (щелкните правой кнопкой мыши проект и выберите «Импорт из базы данных»)
  10. Создайте проект
  11. Скопируйте файл Warehouse.dbschemaиз результатов сборки в проект ABC
  12. В проекте ABC щелкните правой кнопкой мыши «Ссылки на базу данных» и добавьте ссылку на файл Warehouse.dbschema
  13. Создание ссылочных переменных для хранилища
  14. Замените ссылки на Хранилище ссылочными переменными
  15. Теперь ссылки в ABC на Хранилище должны разрешиться.

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

...