Биография
Библиотека
Диссертация
Отчет о поиске
Ссылки
Задание
Персональный сайт магистра Павленко Дениса Николаевича

Добавьте специфики в вашу базу данных Model на SQL Server


первоисточник

Каждая инсталляция SQL Server устанавливает несколько системных баз данных. Согласно предписаниям покойного доктора Э. Ф. Кодда, информация о базе данных должна быть доступна с использованием тех же самых команд, с помощью которых вы запрашиваете данные из собственных баз данных. Может ли быть лучший способ выполнить это назначение, чем хранить системную информацию в некоторой базе данных?

SQL Server устанавливает следующие системные базы данных:

  • Master: Хранит описание всех других баз данных, плюс логины базы данных и собственные системные таблицы.
  • Model: Служит снимком каждой новой базы данных, которую Вы создаете.
  • Msdb: Служит для размещения кода и данных, которые поддерживают SQL Server Agent и SQL Server Management Studio (и ранее Enterprise Manager).
  • Tempdb: Всякий раз, когда Вы создаете временную таблицу (то есть таблицу, имя которой начинается "#" или "##"), она создается в этой базе данных. Кроме того, SQL Server использует эту базу данных, чтобы размещать в ней свои собственные временные таблицы (например, когда Вы используете ORDER BY, SQL Server сортирует результаты именно здесь). Вы модифицируете эту базу данных множество раз в течение часа, и даже минуты.
  • Mssqlresourcedb: Хранит системные объекты. Если Вы не заходите с черного хода, эта база данных скрыта и является доступной только для чтения. Это внутренность SQL Server.

Если Вы используете репликацию, SQL Server может также установить такую базу данных:

  • Distribution: Хранит информацию об издателях, подписчиках, адресатах сервера, и т.д.

(Примечание. Вы никогда не должны модифицировать базы данных Master, MSDB и Mssqlresourcedb.)

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

Предположим, что Вы - независимый консультант, который создает YAFOES (еще одна дружественная система ввода заказов). Специфика может различаться, но вообще-то они все похожи, как копилки: Клиенты, Заказы, Детали, Продукция, Платежи, и так далее. Итак, почему бы не добавить эти таблицы в Model?

Я создал резервную копию для базы Модели, после чего создал несколько типовых таблиц в Model, исходя из предположения, что я - разработчик программ YAFOES. (Примечание. Перед последующими экспериментами я настоятельно прошу Вас сделать резервную копию Model!)

Теперь выполните скрипт в Листинге А, чтобы создать несколько простых таблиц в Модели. Я также добавил представление, пользовательскую функцию (UDF) и хранимую процедуру, а также описания таблиц и столбцов и одно или два значения по умолчанию.

Теперь создайте новую базу данных, которая содержит все новые объекты базы данных, точно такие, как я определил их. По различным причинам, создают отдельные базы данных X, Y и Z (продажи, маркетинг, продукция), однако, все они должны, в конечном счете, приводиться к единому представлению о предприятии, используя SSIS или Cognos или еще что-нибудь на ваш вкус. Я считаю, что начинать такое согласование нужно в базе данных Model. Как только Вы настроите базу данных Model описанным выше способом (с учетом вашей специфики), каждая база данных, которую Вы создаете, будет содержать в точности те же самые определения таблиц и столбцов.

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

Эти эксперименты привели меня к убеждению, что база данных Model является самым пропускаемым в объяснениях и малоиспользуемым объектом SQL Server.

16/10/2006

faq(c)