Если присоединение участвующей в репликации базы данных выполняется не на «родном» сервере, то необходимо удалить поддержку репликации. Для этого используется хранимая процедура sp_removedbreplication [@dbname =] "dbname".
О collation_name. С помощью этого аргумента указывается сопоставление по умолчанию для всех объектов, создаваемых в базе данных. Это же сопоставление будет использоваться и для системных таблиц. Разрешается указывать как сопоставления Windows, так и сопоставления SQL Server. Если сопоставление не указывается, то для базы данных будет использоваться сопоставление, определенное на уровне сервера, то есть то сопоставление, которое было выбрано при установке SQL Server 2000.
Как видно из синтаксиса команды CREATE TABLE и уже рассмотренных аргументов этой команды, при создании базы данных можно определить набор файлов, из которых будет состоять создаваемая база данных. Уже было сказано, что файл определяется с помощью конструкции <fi1espec>, синтаксис которой приведен ниже. Эта конструкция имеет одинаковый формат для всех типов файлов (первичного, вторичного и журнала транзакций). Чтобы соответствующий файл был первичным, перед его определением необходимо указать ключевое слово PRIMARY. Журнал транзакций определяется с помощью ключевого слова LOG ON. Если ни одно из этих ключевых слов не указывается (указывается только слово ON), то соответствующий файл будет вторичным. Дополнительно файлы данных могут быть включены в группы. Это будет рассмотрено несколько позже в этом же разделе.
< filespec >
( [ NAME = Iogica1_file_name , ]
FILENAME = "os_file_name"
[ , SIZE = size ]
[ . MAXSIZE = max_size ]
[ . 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 = 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
j SET < optionspec > [ .. .'.n ] [ WITH < termination > ]
j COLLATE < collationjiame >
}
Как видно из синтаксиса, за один вызов команды может быть изменено не
более одного параметра конфигурации базы данных. Если необходимо выполнить несколько изменений, придется разбить процесс на несколько отдельных
шагов. Рассмотрим более подробно назначение каждого из аргументов.
О database. Имя базы данных, которую необходимо модифицировать. Естественно, указанная база данных должна существовать на сервере.
Чтобы иметь возможность изменить базу данных, необходимо, чтобы с ней не работал ни один пользователь. Если же в базе данных имеется хоть одна активная транзакция, то попытка выполнения команды ALTER DATABASE завершится ошибкой. В этом случае нужно дождаться, пока будут завершены все транзакции, либо воспользоваться аргументом WITH TERMINATION, который будет рассмотрен далее.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24