На
главную страницу
Добавьте специфики в вашу базу данных Model на SQL Server
Arthur Fuller (оригинал:
Add some curves to your SQL Server Model database)
Перевод Моисеенко С.И.
Каждая инсталляция 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
На главную страницу