SQL Server 2000
Страница 48

О WITH <termination>. Вполне возможна ситуация, когда попытка изменения базы данных происходит при выполнении какой-либо транзакции. Как уже говорилось, эти две операции несовместимы и одна из них должна быть от­ложена до окончания другой. То есть администратор должен либо подождать завершения всех активных транзакций, либо принудительно прервать их вы­полнение. В первом случае администратор может довольно долго ждать за­вершения всех транзакций. Более того, ничто не помешает пользователям начинать новые транзакции. В предыдущих версиях, в том числе и в SQL Server 7.0, это было единственным решением. К счастью, в SQL Server 2000 появилась возможность принудительного прерывания всех пользовательских транзакций. Именно для этого и используется аргумент WITH <ternnnation>, который определяет метод прерывания транзакций. Синтаксис конструкции <termination> следующий:

< termination > ::= ROLLBACK AFTER integer [ SECONDS ] | ROLLBACK IMMEDIATE | NO WAIT

» ROLLBACK AFTER num_second [SECONDS] — в этом случае сервер будет ожидать указанное количество секунд, прежде чем прервет все активные и обслуживание баз данных транзакции. Предварительно можно отправить пользователям сообщение по сети, что через столько-то секунд все транзакции будут принудитель­но откачены. За это время пользователи должны либо зафиксировать, либо откатить свои транзакции. * ROLLBACK IMMEDIATE — в этом случае откат пользовательских транзакций

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

» 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), представляет собой уменьшение размера отдельных фай­лов, из которых состоит база данных.

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

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

Страницы: 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63