RSS    

   Реферат: SQL Server 2000

выполняется немедленно без каких-либо пауз.

» NO WAIT— как и в предыдущем случае, откат происходит сразу же. О COLLATE < conation_name >. С помощью этого аргумента указывается сопо­ставление по умолчанию для всех объектов, создаваемых в базе данных. Из­менение сопоставления по умолчанию не влияет на сопоставления, исполь­зуемыми уже созданными объектами базы данных. Разрешается указываться как сопоставления Windows, так и сопоставления SQL Server. Определяет со­поставление для базы данных. По умолчанию задается сопоставление SQL Server.

О SET <optionspec> [ , . . . n ]. С помощью аргумента SET пользователь может управлять различными свойствами базы данных. Свойства указываются с по­мощью конструкции <optionspec>, которая имеет довольно объемную струк­туру. Более подробно управление свойствами базы данных будет рассмотре­но далее в этой главе в разделе «Управление свойствами базы данных».

В предыдущих версиях SQL Server, включая и SQL Server 7.0, не поддерживалась

возможность из­менения свойств базы данных с помощью команды ALTER DATABASE.

Уменьшение размера базы данных

В одном из предыдущих разделов этой главы было рассказано о возможности SQL Server 2000 автоматически увеличивать размер баз данных. Однако неред­ко требуется выполнить и обратный процесс — уменьшение размера базы дан­ных. Действительно, если из базы данных удаляется значительная часть данных или после нескольких дней напряженной работы пользователи существенно сни­жают нагрузку на сервер и в журнале транзакций образуется много свободного пространства, часто возникает необходимость вернуть неиспользуемое дисковое пространство в операционную систему. Как и увеличение базы данных, процесс уменьшения размера базы данных, называемый также сжатием базы данных (shrinking database), представляет собой уменьшение размера отдельных фай­лов, из которых состоит база данных.

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

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

Автоматическое уменьшение размера базы данных происходит в том случае, когда сервер обнару­живает в базе данных слишком много неиспользуемого пространства.

Несмотря на некоторые недостатки автоматического уменьшения размера базы данных, нельзя не отметить и неоспоримое преимущество — администратор освобождается от необходимости следить за размером базы данных, а также за объемом используемого и свободного пространства, переложив эту обязанность на сервер.

Для разрешения или запрещения автоматического уменьшения базы данных используется хранимая процедура sp_dboption:

sp_dboption  "database_name", "autoshrink". ("true" | "false")

С помощью первого аргумента указывается имя базы данных, свойства кото­рой предполагается изменять. Второй аргумент должен оставаться таким, как он приведен выше. Указывая значение "true" или " f al se", можно соответствен­но разрешать и запрещать автоматическое уменьшение файлов базы данных.

Автоматическое уменьшение размера базы данных можно разрешить и с помощью команды ALTER DATABASE, воспользовавшись аргументом SET. Более подробно управление свойствами базы дан­ных будет рассмотрено в следующем разделе.

Помимо автоматического можно также выполнять ручное уменьшение раз­мера базы данных. Это делается с помощью команды контроля согласованности (или целостности) базы данных (database consistency check, DBCC):

DBCC SHRINKDATABASE

( databasejname [ , target_percent ]

[ , TRUNCATEONLY ]

)

Рассмотрим назначение аргументов.

О database_name. Имя базы данных, которую необходимо сжать.

О target_percent. Количество процентов свободного пространства, которое же­лательно оставить в базе данных после выполнения ее сжатия. Говоря точ­нее, с помощью рассматриваемого аргумента указывается процент от общего объема файлов базы данных, который должен быть незаполненным. Напри­мер, если в файле размером 10 Мбайт имеется 4 Мбайта свободного простран­ства, то для уменьшения количества неиспользуемого пространства до 2 Мбайт необходимо указать значение аргумента target_percent равным 25. Снача­ла сервер вычисляет объем свободного и занятого пространства (соответствен­но 4 и 6 Мбайт). Чтобы получить искомые 25 процентов, соотношение сво­бодного и занятого пространства должно быть 3 к 1. Путем нехитрых вычислений сервер приходит к выводу, что нужный результат будет получен при размере файла, равном 8 Мбайт. После этого сервер переносит все данные из последних 2 Мбайт файла в первые 8 Мбайт, помещая их в любое незанятое место на странице. После того как все данные будут перенесены, выполняется уменьшение размера файла. Заметим, что в аргументе target_percent нельзя указывать размер, превышающий текущий процент свободного пространства. В противном случае уменьшение размера файла выполнено не будет. Таким образом, выполняя команду DBCC SHRINKDATABASE

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

О NOTRUNCATE. При задании этого аргумента свободное пространство не возвра­щается операционной системе, а резервируется в файлах для будущего ис­пользования, то есть физически уменьшения размера базы данных не проис­ходит. Тем не менее, сервер все же выполняет перенос данных в начало файла, как это было описано для предыдущего аргумента.

О TRUNCATEONLY. При задании этого аргумента сервер удаляет все свободное про­странство в файле за последним используемым экстентом. Значение аргумента target_percent при этом игнорируется. Не предпринимается никакой по­пытки перемещения данных для более эффективного их распределения в фай­ле. Если в файле размером 2 Мбайт выделено всего два экстента в начале и в середине файла, то при использовании команды DBCC SHRINKDATABASE бу­дет освобождена только половина файла, начиная от второго экстента и до конца файла. Размер файла будет составлять около 1 Мбайт, хотя в принци­пе он мог быть уменьшен до 128 Кбайт.

Права на сжатие базы данных с помощью команды DBCC SHRINKDATABASE выданы только членам фиксированной роли сервера sysadmin и фиксирован­ной роли базы данных dbowner. Эти права не могут быть переданы пользовате­лю никаким другим способом, кроме как включением его в одну из этих ролей. Чтобы уменьшить количество свободного пространства в базе данных pubs до 15% с резервированием освобожденного пространства для дальнейшего ис­пользования, необходимо выполнить следующую команду: DBCC SHRINKDATABASE (pubs. 15. NOTRUNCATE)

He имеет значения, в контексте какой базы данных выполняется команда DBCC SHRINKDATABASE, так как при ее вызове явно указывается имя нужной базы данных.

После выполнения команды сервер выдаст примерно следующее сообщение:

Dbld Fileld CurrentSize MinSize    UsedPages    EstimatedPages

5      2        96                63           96               56

(1 row(s) affected)

DBCC execution completed.  If DBCC printed error messages, contact your system

administrator.

Рассмотрим назначение столбцов в полученном результате. О Dbld — идентификационный номер базы данных. Этот номер-будет одинаков

для всех отображаемых строк.

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

О CurrentSize— количество страниц, которое имеется в файле, причем учи­тываются как заполненные, так и свободные страницы.

О MinimumSize— минимальное количество страниц, до которого может быть уменьшен файл. Это значение может ограничиваться начальным размером файла, установленным при его создании. В ином случае оно равно значению в столбце EstimatedPages.

О UsedPages— количество страниц, содержащих данные.

О EstimatedPages— количество страниц, до которого может быть сжат файл. Однако не всегда файл может быть сжат до указанного размера, так как нельзя установить размер файла меньше первоначального.

Список баз данных и соответствующих идентификационных номеров хранится в таблице sysdatabases системной базы данных master. Для получения идентификационного номера базы данных можно использовать команду DB_ID ("databasename"). Если же необходимо определить имя базы данных по идентификационному номеру, то можно воспользоваться командой DB_NAME(database_id).

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

DBCC SHRINKFILE

( filejname

{ [ . target_size ]

j  [  .     NOTRUNCATE  ]

Выполнение этой команды, в отличие от команды DBCC   SHRINKDATABASE, должно производиться в контексте той базы данных, файл которой предполага­ется уменьшить. Напомним, что для переключения баз данных используется команда USE. Рассмотрим назначение аргументов команды DBCC SHRINKFILE. О f i 1 e_name  |  f i 1 e_i d. Имя файла, который необходимо сжать, или его иден-

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.