В следующей статье объясняется, как использовать ссылочные переменные в проекте базы данных. http://msdn.microsoft.com/en-us/library/bb386242.aspx
Это необходимо, когда вы ссылаетесь на базу данных, которая не находится в том же решении (см. первую диаграмму, вторая строка).
В моем случае у меня, вероятно, будут отдельные решения для каждой бизнес-среды (внутренние приложения, внешние приложения, склад и т. д.). Каждое из этих решений будет иметь несколько баз данных. Но базы данных должны будут ссылаться на базы данных, которые не находятся в одном и том же решении (например, внутренняя БД может иметь хранимые процедуры, которые извлекают данные из внешней БД).
В этом случае я думаю, что лучшим решением будет обратиться к файлу .dbschema, который создается при сборке проекта. Вы можете настроить ночную сборку для каждого проекта и скопировать выходные данные сборки в определенное место на общем диске. Затем вы можете указать любой проект базы данных на схему любой другой базы данных, добавив ссылку на базу данных (описанную в статье выше) в .dbschema (на общем диске) для базы данных.
Если вы хотите сделать его более сложным, вы можете изменить шаблон сборки, чтобы скопировать необходимые файлы .dbschema из выходных данных сборки в каждый проект и зарегистрировать их.
В случае, когда база данных не имеет проекта и активно не изменяется, необходимо будет создать временный проект базы данных для базы данных, чтобы можно было построить файл .dbschema. Затем созданный файл .dbschema можно вернуть в зависимый проект, и вам не придется создавать его снова, пока он не изменится.
Я сделаю все возможное на примере…
Проблема: проект ABC зависит от хранилища данных и от проекта XYZ. Project XYZ находится в системе управления версиями в другом решении, но Warehouse не находится в системе управления версиями.
Решение:
- Создайте ночную сборку для проекта XYZ
- Настройте выходной каталог сборки для перехода на общий диск
- Создайте собственный шаблон сборки для проекта ABC, который скопирует файл XYZ.dbschema в проект ABC и зарегистрирует его.
- В проекте ABC щелкните правой кнопкой мыши «Ссылки на базу данных» и добавьте ссылку на XYZ, указав файл XYZ.dbschema (вместо проекта базы данных XYZ, который находится вне решения)
- Создайте эталонные переменные для проекта XYZ (не уверен, что это необходимо…)
- Замените ссылки на XYZ в хранимых процедурах и представлениях ссылочными переменными, которые вы создали на предыдущем шаге (не уверен, что это необходимо…)
- Теперь ссылки в ABC на XYZ должны разрешиться.
- Создайте новый проект базы данных (это может быть временный одноразовый проект)
- Попросите его извлечь определение из хранилища (щелкните правой кнопкой мыши проект и выберите «Импортировать из базы данных»)
- Построить проект
- Скопируйте файл Warehouse.dbschema из выходных данных сборки в проект ABC.
- В проекте ABC щелкните правой кнопкой мыши «Ссылки на базу данных» и добавьте ссылку на файл Warehouse.dbschema.
- Создайте эталонные переменные для хранилища
- Заменить ссылки на Хранилище ссылочными переменными
- Теперь ссылки в ABC на Хранилище должны разрешаться.
Я не знаю, будет ли это работать просто так, но это теория. Надеюсь, поможет…
person
simon
schedule
30.01.2012