Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00
Лекция 9:

Создание баз данных

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Применение Enterprise Manager

При помощи SQL Server Enterprise Manager вы можете создавать более сложные базы данных, чем те, которые можно создать с помощью мастера Create Database Wizard. Вы можете задать разные настройки роста для каждого из создаваемых файлов, а не одинаковые для всех файлов. Вы также можете создавать пользовательские группы файлов. Для создания базы данных при помощи Enterprise Manager выполните последовательность шагов, которые будут перечислены ниже. В нашем примере мы создадим базу данных с именем MyDB, имеющую первичный файл данных, три вторичных файла данных (находящихся в той же самой пользовательской группе файлов) и один файл-журнал.

  1. Откройте Enterprise Manager. В левой панели раскройте группу SQL Server, в которой находится имя сервера, на котором вы хотите создать базу данных, а затем раскройте узел самого этого сервера. Затем нажмите правой кнопкой мыши на папку Databases и выберите New Database.
  2. Откроется окно свойств базы данных (Database Properties) с открытой вкладкой General (Общие) (рис. 9.10). Введите с клавиатуры имя базы данных в поле Name.
  3. Откройте вкладку Data Files (см. рис. 9.11). Как видите, Enterprise Manager автоматически создает первичный файл данных, с именем вашей базы данных в качестве префикса и PRIMARY в качестве имени группы файлов. Вы можете изменить имя, местоположение и размер первичного файла, но вы не сможете изменить группу файла для первичного файла данных. Введите с клавиатуры имя файла (логическое имя), местоположение (физическое имя), размер и группу для каждого из создаваемых вами файлов. Для каждого файла данных, кроме первичного файла, вы можете задать имя пользовательской группы файлов, и, в соответствии с вашим желанием, эта группа файлов будет создана. В нашем примере мы создали вторичный файл данных MyDB_Data2 в группе файлов My_FG.
    Вкладка General окна свойств базы данных

    Рис. 9.10. Вкладка General окна свойств базы данных
    Вкладка Data Files окна свойств базы данных

    Рис. 9.11. Вкладка Data Files окна свойств базы данных
    По умолчанию, каждый файл располагается на диске в папке, в которой инсталлирован SQL Server. Вы можете изменить эту настройку, задав другой путь с клавиатуры или при помощи экранной кнопки для его поиска ("...").
  4. В области File Properties (Свойства файла) в нижней части окна вы можете задать настройки автоматического роста для отдельных файлов. Выделите имя файла, для которого вы хотите задать настройки роста. Чтобы разрешить автоматический рост этого файла, установите флажок Automatically grow file. Затем вы можете задать приращение файла, выраженное в мегабайтах или в процентах от свободного места, оставшегося в файле. Нажав на селективную кнопку Restrict file growth (Ограничить рост файла), вы также можете задать максимальный размер файла, указав предел роста, выраженный в мегабайтах, а можете и не ограничивать рост файла. Эти настройки можно задавать при создании каждого из файлов, а можете оставить настройки, применяемые по умолчанию, и задать их позднее при помощи окна Enterprise Manager Database Properties. Если вам понадобится удалить файл из списка, то выделите имя этого файла и нажмите на экранную кнопку Delete.
  5. Завершив конфигурацию всех файлов данных, откройте вкладку Transaction Log и сконфигурируйте файлы журнала транзакций. Файлы журнала конфигурируются точно так же, как и файлы данных, за исключением того, что вы не сможете задать для них группу файлов, потому что они не принадлежат ни одной из групп файлов. Задайте с клавиатуры имя файла (логическое имя), местоположение (физическое имя) и начальный размер для одного или нескольких файлов журнала. Кроме того, задайте настройки автоматического роста файлов журнала, так же как это было описано в п.4 для файлов данных.
  6. После того как вы настроите все файлы так, как вам это нужно, нажмите на OK, и SQL Server создаст базу данных. Вернитесь в Enterprise Manager и нажмите на папку Databases сервера, в который вы только что добавили новую базу данных. Вы увидите в правой панели Enterprise Manager, что SQL Server добавил значок-иконку для этой базы данных.
Применение операторов T-SQL

Возможно, вы пожелаете создавать или изменять свои базы данных при помощи операторов T-SQL, не пользуясь графическим пользовательским интерфейсом (GUI). Вы можете создавать свои собственные сценарии, которые пригодятся при создании баз данных. Допустим, вы создали базу данных, а потом обнаружили, что задали неверное местоположение какого-либо файла. Можно уничтожить эту базу данных и начать все снова. Если для создания базы данных вы применяете сценарий T-SQL, то вы сможете быстро его поправить и запустить снова, а не задавать повторно все данные в графическом пользовательском интерфейсе. Если вам надо создать такую же базу данных на другом компьютере (например, на "горячем" резервном компьютере), то вы можете запустить на нем тот же самый сценарий.

С другой стороны, Enterprise Manager можно применить для генерации сценариев T-SQL, применяемых для создания баз данных (а также сценариев для создания любых объектов баз данных), но только после того, как база данных будет создана. Сценарии, сгенерированные Enterprise Manager, будут содержать все настройки текущей базы данных, что может быть полезно, поэтому вы можете захотеть пользоваться сгенерированным сценарием. Но независимо от того, будете ли вы писать свои сценарии или пользоваться сгенерированными, это окажется полезным для понимания кода T-SQL, применяемого для создания баз данных. В данном разделе мы рассмотрим операторы T-SQL для создания баз данных. Эти команды можно набрать с клавиатуры в файл и создать сценарий. (О создании и запуске сценариев см. "Введение в Transact-SQL и SQL Query Аnalyzer" .)

Практические советы.

Простая база данных

В данном примере мы создадим базу данных с именем MyDB, содержащую: первичный файл данных (MyDB_root); один вторичный файл данных (MyDB_data1), который по умолчанию останется в первичной группе файлов и один файл журнала транзакций (Log_data1). Ниже показаны операторы SQL, которые создадут базу данных MyDB:

CREATE DATABASE MyDB 
ON 
(NAME = MyDBroot,  --Первичный файл данных 
FILENAME = 'c:\mssql2k\MSSQL\data\mydbroot.mdf', 
SIZE = 8MB, 
MAXSIZE = 9MB, 
FILEGROWTH = 100KB), 
(NAME = MyDBdata1,   --Вторичный файл данных
FILENAME = 'c:\mssql2k\MSSQL\data\mydbdata1.ndf', 
SIZE = 1000MB, 
MAXSIZE = 1500MB, 
FILEGROWTH = 100MB) 
LOG ON 
(NAME = Logdata1, --Файл журнала
FILENAME = 'e:\log_files\logdata1.ldf', 
SIZE = 1000MB, 
MAXSIZE = 1500MB, 
FILEGROWTH = 100MB)

Обратите внимание, что в приведенном выше примере первичный и вторичный файлы данных оба расположены на диске C, а файл журнала расположен на диске E. Мы уже говорили, что файлы данных и файлы журналов нужно всегда размещать на физически разных устройствах, чтобы повысить производительность ввода-вывода при доступе к дискам. Кроме того, обратите внимание, что были использованы рекомендуемые расширения имен файлов – .mdf, .ndf, и .ldf. Настройки SIZE (Размер), MAXSIZE (Максимальный размер) и FILEGROWTH (Рост файла) могут быть заданы в Кб либо в Мб (по умолчанию применяются Мб).

Дополнительная информация. Более подробное описание оператора CREATE DATABASE вы найдете в Books Online, в теме "Create Database" (Создание базы данных).
Практические советы.

Этот пример базы данных относится к системе с несколькими дисковыми накопителями или с несколькими массивами дисков в RAID-системе. Мы будем употреблять термин "диск", когда будем говорить и об отдельных дисковых накопителях, и о массивах дисковых накопителей, работающих как том RAID. Будут созданы несколько файлов, каждый на своем отдельном диске. Каждый файл помещается в одну из двух групп файлов. Наша база данных получит имя Sales и будет содержать следующие файлы:

  • первичный файл данных, Sales_root.mdf;
  • три вторичных файла данных customer_data1.ndf, customer_data2.ndf и customer_data3.ndf, в группе файлов customers_group;
  • два вторичных файла данных product_data1.ndf и product_data2.ndf, в группе файлов products_group;
  • один файл журнала транзакций, log_data1.ldf.

Ниже показан текст скрипта, который создаст базу данных Sales. Так как будут создаваться пользовательские группы файлов, то в команде CREATE DATABASE будет содержаться ключевое слово FILEGROUP.

CREATE DATABASE Sales 
ON PRIMARY             	     --Явное задание первичной
                                     --группы файлов (не обязательно) 
(NAME = Sales_root,       --Первичный файл данных
FILENAME = 'c:\mssql2k\MSSQL\data\salesroot.mdf', 
SIZE = 8MB, 
MAXSIZE = 10MB, 
FILEGROWTH = 1MB), 
FILEGROUP customers_group    --Группа файлов для следующих файлов 
(NAME = customerdata1,          --Вторичный файл данных
FILENAME = 'd:\mssql2k\MSSQL\data\customerdata1.ndf', 
SIZE = 800MB, 
MAXSIZE = 1000MB, 
FILEGROWTH = 100MB), 
(NAME = customerdata2,           --Вторичный файл данных
FILENAME = 'e:\mssql2k\MSSQL\data\customerdata2.ndf', 
SIZE = 800MB, 
MAXSIZE = 1000MB, 
FILEGROWTH = 100MB), 
(NAME = customerdata3,           --Вторичный файл данных
FILENAME = 'f:\mssql2k\MSSQL\data\customerdata3.ndf', 
SIZE = 800MB,
MAXSIZE = 1000MB, 
FILEGROWTH = 100MB), 
FILEGROUP products_group   	--Группа файлов для следующих файлов 
(NAME = productdata1,            	--Вторичный файл данных
FILENAME = 'g:\mssql2k\MSSQL\data\productdata1.ndf', 
SIZE = 500MB, 
MAXSIZE = 700MB, 
FILEGROWTH = 100MB), 
(NAME = productdata2,           	--Вторичный файл данных
FILENAME = 'h:\mssql2k\MSSQL\data\productdata2.ndf', 
SIZE = 500MB, 
MAXSIZE = 700MB, 
FILEGROWTH = 100MB) 
LOG ON 
(NAME = logdata1,                    	--Файл журнала
FILENAME = 'i:\log_files\logdata1.ldf', 
SIZE = 800MB, 
MAXSIZE = 1000MB, 
FILEGROWTH = 200MB)

Из комментариев к этому примеру видно, что перед заданием первичного файла можно в явном виде задать первичную группу файлов. Но явное задание не обязательно, т.к. по умолчанию считается, что происходит задание первичной группы файлов. Две другие группы файлов, customers_group и products_group, задаются непосредственно перед определениями размещаемых в них файлов. Все файлы, перечисленные после определения группы файлов, будут помещаться в эту группу файлов до тех пор, пока не появится определение новой группы файлов или не появится предложение LOG ON.

Обратите внимание на обозначения дисков для файлов. Каждый из файлов создается на своем диске, чтобы при создании таблиц и индексов в группах файлов данные могли бы равномерно распределяться по многим дискам. Например, данные из таблицы, созданной в группе файлов customers_group разместятся на нескольких дисках, на которых будут располагаться файлы customer_data1.ndf, customer_data2.ndf и customer_data3.ndf. Файл журнала тоже располагается на отдельном диске, на котором не располагаются никакие файлы данных, благодаря чему становится возможной запись файла журнала с последовательным вводом-выводом (перемещением записывающих головок дискового накопителя только на соседние дорожки).

Если вы не хотите, чтобы SQL Server производил автоматический рост файла, то задайте FILEGROWTH=0, тогда файлу будет разрешено заполнять только первоначально отведенное для него пространство. Эту настройку можно задать, когда происходит работа со статическими таблицами, т.е. с таблицами, которые не растут. В этом случае в операторе не требуется задавать MAXSIZE, максимальный размер файла будет совпадать с начальной настройкой SIZE.

Примечание. Те, кто хорошо знаком с SQL Server версии 6.5 или более ранними версиями, заметят, что перед созданием базы данных больше не применяется команда DISK INIT для создания логических устройств. Вместо логических устройств теперь используются файлы.
< Лекция 8 || Лекция 9: 12345 || Лекция 10 >