ref-14882 (SQL Server 2000), страница 14
Описание файла
Документ из архива "SQL Server 2000", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "ref-14882"
Текст 14 страницы из документа "ref-14882"
[ , SIZE = size ]
[ . MAXSIZE = { max_size | UNLIMITED } ]
[ . FILEGROWTH = growthj increment ] ) [ . ...n ]
Рассмотрим назначение используемых аргументов.
О NAME = logical_file_name. Логическое имя файла, под которым он будет опознаваться при выполнении различных команд Transact-SQL. Логическое имя файла должно быть уникальным в пределах базы данных. Имя файла журнала транзакций не должно совпадать с именем файла самой базы данных. Использование ключевого слова NAME не требуется, если выполняется присоединение базы данных, однако таким образом можно указать новое логическое имя для физического файла.
О 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, так как по умолчанию размер файла не ограничивается, и он будет расти, пока не заполнит все доступное пространство на диске. Мы рассмотрели синтаксис конструкции , которая используется для описания файлов базы данных. Как уже было сказано, файлы данных (mdf и ndf) могут объединяться в так называемые группы файлов. Подобное объединение выполняется с целью упрощения управления файлами. Например, при создании резервных копий можно выполнять архивирование не всей базы дан- • ных целиком, а лишь определенной группы файлов. Основным же назначением групп файлов является размещение в них данных определенных таблиц или их отдельных столбцов, а также хранение индексов. При создании таблицы вы можете явно указать, в какой группе файлов должны храниться данные того или иного столбца. Как следствие, подобным образом можно предписать хранить данные столбцов на разных логических или физических дисках.
Файлы, не включенные явно ни в какую группу, будут включены в группу файлов по умолчанию, которой первоначально является первичная группа файлов. Однако если имеется необходимость в дополнительных группах файлов с теми или иными файлами, необходимо воспользоваться конструкцией , имеющей следующий синтаксис:
FILEGROUP filegroupjiame [,..'.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 [, . . .n]. Этот аргумент используется, когда в базу данных необходимо добавить новые файлы данных. Как видно из синтаксиса, одновременно можно добавить множество файлов. Как и при работе с командой CREATE DATABASE, файлы описываются с помощью конструкции , синтаксис и использование которой были рассмотрены в предыдущем разделе при рассмотрении создания базы данных.
• ТО FILEGROUP f 11 egroup_name. Используется в сочетании с предыдущим аргументом для добавления файлов в определенную группу файлов. Если аргумент ТО FILEGROUP не указывается, то файлы будут добавлены в группу файлов по умолчанию.
О ADD LOG FILE [, . . .n]. Если с помощью двух предыдущих аргументов можно добавлять в базу данных файлы данных, то аргумент ADD LOG FILE используется для добавления в базу данных одного или более файлов журнала транзакций.
О REMOVE FILE 1 ogica1_fi 1 e_name. В противоположность предыдущим, с помощью рассматриваемого аргумента осуществляется удаление из базы данных одного из файлов. Отметим, что за одну команду ALTER DATABASE можно удалить всего один файл. Аргумент REMOVE FILE используется как для удаления файлов данных, так и для удаления файлов журнала транзакций. Однако прежде чем станет возможным удаление файла, он должен быть освобожден от данных. В противном случае сервер не разрешит его удаление.
Освободить файл от данных можно с помощью команды DBCC SHRINKFILE (file_name, EMPTYFILE). Аргумент EMPTYFILE предписывает распределить все данные из файла между другими файлами группы. Добавление новых данных в файл не разрешается.
О ADD FILEGROUP f i legroup_name. Используется для создания в базе данных группы файлов с указанным именем. Как видно из синтаксиса, при создании группы не указывается, какие файлы должны в нее войти. Перенос существующих файлов в новую группу выполняется отдельно. В базе данных может быть создано до 256 групп файлов. Напомним, что группы файлов создаются только для файлов данных. Файлы журнала транзакций не могут быть организованы в группы.
О REMOVE FILEGROUP filegroup_name. Используется для удаления из базы данных указанной группы файлов. При этом также будут удалены все файлы, включенные в эту группу. Однако перед выполнением этой операции необходимо предварительно удалить из файлов все данные.
О MODIFY FILE
( NAME = logical_file_narne
[ . NEWNAME = new_log1cal_name ]
[ , FILENAME = "os_file_name" ]
[ . SIZE = size ]
[ . MAXSIZE = { max_s1ze | UNLIMITED } ]
[ . FILEGROWTH = growthjncrement ] )
О MODIFY NAME = new_dbname. Как нетрудно догадаться, этот аргумент позволяет изменять имя базы данных. Для этого достаточно всего-навсего указать новое имя с помощью параметра new_dbname.
О MODIFY FILEGROUP fi1egroup_name NAME = new_fi1egroup_name. Помимо изменения имени базы данных также можно переименовать и отдельную группу файлов. Это и делается с помощью рассматриваемого аргумента. Все, что нужно для изменения имени группы, — указать текущее имя с помощью параметра f i I egroup_name и новое имя— с помощью параметра new_fiIegroup_name.
О MODIFY FILEGROUP fi1egroup_name filegroup_property. Этот аргумент позволяет управлять свойствами группы файлов. Имя группы файлов, свой- • ства которой предполагается изменить, задается параметром f i I egroup_name, тогда как параметр f i I egroup_property предназначен для указания свойства, которое должно быть назначено для группы файлов. Поддерживаются следующие значения параметра f ilegroup_property.