Смекни!
smekni.com

О FILENAME = "os_f 11 e_name". Если с помощью предыдущего аргумента указы­валось логическое имя файла, то рассматриваемый аргумент предназначен для указания полного пути и названия соответствующего физического файла, ко­торый будет создан на жестком диске. Это имя будет иметь файл на уровне операционной системы. Если вы воспользуетесь какой-либо программой про­смотра диска, то после успешного выполнения команды CREATE DATABASE сможете увидеть файл с указанным именем. Напомним, что SQL Server 2000 не позволяет создавать файлы базы данных на сжатых томах и сетевых дисках.

По умолчанию для файлов баз данных используются расширения .mdf, .ndf и .Idf соответственно для первичного, вторичных файлов и файлов журнала транзакций. В принципе, вы можете указать любое другое расширение, но вряд ли найдется серьезная причина делать это. Чтобы не создавать путаницы, советуем оставлять значения по умолчанию, то есть при описании файла не указывать расширение.

О SIZE = size. С помощью этого аргумента указывается первоначальный раз­мер, который будет иметь соответствующий файл. Размер может быть указан либо в мегабайтах, либо в килобайтах. Для явного задания величины можно использовать приставки М b и К Ь. По умолчанию считается, что размер задает­ся в мегабайтах. Минимальный размер файла составляет 512 Кбайт. Если раз­мер файла не указывается явно, то по умолчанию будет создан файл размером > 1 Мбайт. Отметим, что в качестве размера файла разрешается задавать только целочисленные значения. Таким образом, если необходимо задать дробное ко­личество мегабайт, следует указать соответствующее значение в килобайтах.

О FILEGROWTH = growth_iincrement. При описании физической архитектуры базы данных в главе 4 было сказано, что начиная с SQL Server 7.0 поддерживает­ся автоматическое увеличение (auto grow) размера базы данных, что реали­зуется путем последовательного автоматического увеличения размеров фай­лов, входящих в состав базы данных. SQL Server 2000 позволяет контролировать величину прироста каждого из файлов базы данных отдель­но от других, задавая шаг прироста не на уровне базы данных, а на уровне отдельного файла. С помощью рассматриваемого аргумента задается величи­на прироста файла базы данных. Шаг прироста может быть указан как в аб­солютном выражении в виде конкретного количества мегабайт (М Ь) или килобайт (Kb), так и в относительном в виде определенного процента (%) от первоначального размера файла. По умолчанию предполагается, что указы­вается значение в мегабайтах. Если аргумент FILEGROWTH опущен, то файл будет увеличиваться на 10 % от первоначального объема. Минимальный раз­мер, на который может быть увеличен файл, составляет 64 Кбайт. Отметим, что в сумме первоначальный размер файла и выбранный шаг прироста не должны превышать указанный максимальный размер файла.

О MAXSIZE = { max_size | UNLIMITED }. Автоматическое увеличение файлов связано с определенными проблемами. В частности, если диск с файлом базы данных используется для хранения временных файлов различных приложе­ний, то увеличение файла базы данных до большого размера может привести к нарушению работоспособности приложений. Для избежания этой и других подобных проблем SQL Server 2000 позволяет ограничивать рост файлов кон­кретным размером. Для этого и требуется рассматриваемый аргумент. Мак­симальный размер может быть указан в мегабайтах (Mb— используется по умолчанию) или килобайтах (Kb). Отметим, что ограничение роста отдель­ного файла не ограничивает возможность увеличения роста всей базы дан­ных, так как размер базы данных может увеличиваться за счет пророста дру­гих файлов. Если ограничивать максимальный размер файла не нужно, то

необходимо указать значение UNLIMITED или вообще опустить аргумент MAXSIZE, так как по умолчанию размер файла не ограничивается, и он будет расти, пока не заполнит все доступное пространство на диске. Мы рассмотрели синтаксис конструкции <filespec>, которая используется для описания файлов базы данных. Как уже было сказано, файлы данных (mdf и ndf) могут объединяться в так называемые группы файлов. Подобное объеди­нение выполняется с целью упрощения управления файлами. Например, при создании резервных копий можно выполнять архивирование не всей базы дан- • ных целиком, а лишь определенной группы файлов. Основным же назначением групп файлов является размещение в них данных определенных таблиц или их отдельных столбцов, а также хранение индексов. При создании таблицы вы мо­жете явно указать, в какой группе файлов должны храниться данные того или иного столбца. Как следствие, подобным образом можно предписать хранить данные столбцов на разных логических или физических дисках.

Файлы, не включенные явно ни в какую группу, будут включены в группу файлов по умолчанию, которой первоначально является первичная группа фай­лов. Однако если имеется необходимость в дополнительных группах файлов с теми или иными файлами, необходимо воспользоваться конструкцией <filegroup>, имеющей следующий синтаксис:

<fiIegroup> : : =

FILEGROUP filegroupjiame <filespec> [,..'.n]

Аргумент fi1egroup_name определяет имя группы файлов, под которым она будет распознаваться при выполнении команд Transact-SQL. После имени группы файлов следует определение включаемых в нее файлов. Как видно из синтакси­са, в одну группу файлов может быть включено множество файлов.

Мы рассмотрели создание обычной базы данных, работа с которой произво­дится на локальном сервере. Иногда бывает необходимо перенести базу данных на новый сервер или разослать копии базы данных (например, каталог или го­довой отчет компании). SQL Server 2000 имеет инструменты для выполнения таких задач. Перенос выполняется путем отсоединения и последующего присо­единения базы данных. Далее в этой главе будет подробно описан механизм этих операций, а также будут рассмотрены хранимые процедуры для выполне­ния отсоединения и присоединения базы данных.

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

Для создания переносимой базы данных используется хранимая процедура sp_create_removable. Чтобы после создания базы данных проверить, соответствует ли она требованиям переносимой базы данных, можно использовать хранимую процедуру sp_certify_removable.

Управление базами данных

К управлению базой данных на физическом уровне относится вся работа по изменению имен, размера, количества, положения файлов базы данных, усече­ние базы данных и журнала транзакций, создание групп файлов, изменение группы файлов по умолчанию, изменение имени и владельца базы данных, присоединение и отсоединение баз данных, изменение параметров базы данных с помощью хранимых процедур, а также выполнение других действий.

Большинство действий по изменению конфигурации базы данных выполня­ется с помощью команды ALTER DATABASE:

ALTER DATABASE database

{ ADD FILE < filespec > [ ,...n ] [TO FILEGROUP filegroupjiame ]

| ADD LOG FILE < filespec > [ ....n ]

j REMOVE FILE logicaljfilejiame [ WITH DELETE ]

| ADD FILEGROUP filegroupjiame

j REMOVE FILEGROUP filegroupjiame

j MODIFY FILE < filespec >

j MODIFY NAME = new_dbname

j MODIFY FILEGROUP filegroupjiame NAME=new_filegroup_name

| MODIFY FILEGROUP filegroupjiame filegroupjproperty }

j SET < optionspec > [ .. .'.n ] [ WITH < termination > ]

j COLLATE < collationjiame >

}

Как видно из синтаксиса, за один вызов команды может быть изменено не

более одного параметра конфигурации базы данных. Если необходимо выпол­нить несколько изменений, придется разбить процесс на несколько отдельных

шагов. Рассмотрим более подробно назначение каждого из аргументов.

О database. Имя базы данных, которую необходимо модифицировать. Естествен­но, указанная база данных должна существовать на сервере.

Чтобы иметь возможность изменить базу данных, необходимо, чтобы с ней не работал ни один пользо­ватель. Если же в базе данных имеется хоть одна активная транзакция, то попытка выполнения коман­ды ALTER DATABASE завершится ошибкой. В этом случае нужно дождаться, пока будут завершены все транзакции, либо воспользоваться аргументом WITH TERMINATION, который будет рассмотрен далее.

О ADD FILE <fi1espec> [, . . .n]. Этот аргумент используется, когда в базу данных необходимо добавить новые файлы данных. Как видно из синтакси­са, одновременно можно добавить множество файлов. Как и при работе с командой CREATE DATABASE, файлы описываются с помощью конструкции <filespec>, синтаксис и использование которой были рассмотрены в преды­дущем разделе при рассмотрении создания базы данных.

• ТО FILEGROUP f 11 egroup_name. Используется в сочетании с предыдущим ар­гументом для добавления файлов в определенную группу файлов. Если ар­гумент ТО FILEGROUP не указывается, то файлы будут добавлены в группу файлов по умолчанию.

О ADD LOG FILE <f11espec> [, . . .n]. Если с помощью двух предыдущих ар­гументов можно добавлять в базу данных файлы данных, то аргумент ADD LOG FILE используется для добавления в базу данных одного или более файлов журнала транзакций.

О REMOVE FILE 1 ogica1_fi 1 e_name. В противоположность предыдущим, с по­мощью рассматриваемого аргумента осуществляется удаление из базы дан­ных одного из файлов. Отметим, что за одну команду ALTER DATABASE мож­но удалить всего один файл. Аргумент REMOVE FILE используется как для удаления файлов данных, так и для удаления файлов журнала транзакций. Однако прежде чем станет возможным удаление файла, он должен быть ос­вобожден от данных. В противном случае сервер не разрешит его удаление.