Лучшая практика SCRIPT Установка базы данных - PullRequest
3 голосов
/ 05 августа 2010

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

ЗАДАЧА А) В моем сценарии у меня есть несколько пакетов для создания таблиц. Таблицы имеют много внешних ключей друг к другу, на данный момент я должен организовать партии в правильном порядке, чтобы избежать конфликта с таблицами FK. Я хотел бы знать, может ли быть хорошей практикой сначала создавать таблицы и все столбцы без FK, а в конце сценария ALTER такие таблицы добавлять FK.

ПРОБЛЕМА Б) Мой скрипт должен использоваться для создания разных БД на разных Серверах. База данных может иметь разные имена при каждой установке. Теперь в моем скрипте я создаю базу данных, используя:

CREATE DATABASE NameX

и

USE NameX

чтобы использовать его.

Потому что мне нужно будет вручную обновлять скрипт для каждой установки. Я подумал, что было бы здорово иметь ЦЕНТРАЛИЗОВАННЫЙ способ именования базы данных внутри сценария. Таким образом, изменение простой переменной создаст базу данных с моим именем и всеми операторами USE. Я пытался использовать МЕСТНЫЕ ПЕРЕМЕННЫЕ, но безуспешно, потому что после операторов GO они выходят за рамки. У меня нет опыта использования sqlcmd и переменных там.

Есть идеи, как решить это внутри моего скрипта? PS: я использую MS SQL 2008 и загружу свой скрипт в MS SMS

Спасибо, ребята, за вашу помощь, это сообщество великолепно: -)

Ответы [ 2 ]

2 голосов
/ 05 августа 2010
  • избегайте использования "USE DATABASE"
  • разделяйте сценарий создания базы данных и сценарии создания объекта данных
  • используйте некоторый код (Setup, Deploy) для выполнения создания сценария базы данных, заменив @имя_базы_данных с реальным именем

альтернатива:

  • использовать какой-либо инструмент замены для подготовки сценариев перед развертыванием (просто замените @@@ database_name @@@ на настоящее имя)
  • использовать bat-файл для подготовки сценариев

альтернатива

  • использовать Database Project в Visual Studio.VS может генерировать некоторые переменные, которые могут изменить проекты установки в процессе развертывания.
1 голос
/ 05 августа 2010

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

Что касается вашей второй проблемы - я не знаю, как это централизовать. Лучший вариант - глобальный поиск / замена имени базы данных в открытых файлах в SSMS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...