ALTER DATABASE (Transact-SQL)
Изменяет базу данных или файлы и файловые группы, связанные с базой данных. Добавляет или удаляет файлы и файловые группы из базы данных, изменяет атрибуты базы данных или ее файлов и файловых групп, изменяет параметры сортировки базы данных и устанавливает параметры базы данных. Моментальные снимки базы данных изменить нельзя. Чтобы изменить параметры базы данных, связанные с репликацией, используйте процедуру sp_replicationdboption.
Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии), База данных SQL Azure. |
Так как синтаксис ALTER DATABASE имеет значительную длину, его разделяют на несколько частей:
ALTER DATABASE
Данный раздел содержит синтаксис, изменяющий имя и параметры сортировки базы данных.ALTER DATABASE «параметры файлов и файловых групп»
Содержит синтаксис, добавляющий или удаляющий файлы и их группы в базе данных, а также предназначенный для изменения атрибутов указанных файлов.ALTER DATABASE SET «параметры»
Содержит синтаксис, изменяющий атрибуты базы данных с помощью параметров SET команды ALTER DATABASE.ALTER DATABASE «зеркальное отображение базы данных»
Содержит синтаксис параметров SET команды ALTER DATABASE, используемых в процессе зеркального отображения базы данных.ALTER DATABASE SET HADR
Предоставляет синтаксис для параметров Группы доступности AlwaysOn инструкции ALTER DATABASE для настройки базы данных-получателя вторичной реплики группы доступности AlwaysOn.ALTER DATABASE «уровень совместимости»
Содержит синтаксис параметров SET команды ALTER DATABASE, относящихся к уровню совместимости базы данных.
Cинтаксические обозначения в Transact-SQL
Синтаксис
-- SQL Server Syntax
ALTER DATABASE { database_name | CURRENT }
{
MODIFY NAME = new_database_name
| COLLATE collation_name
| <file_and_filegroup_options>
| <set_database_options>
}
[;]
<file_and_filegroup_options >::=
<add_or_modify_files>::=
<filespec>::=
<add_or_modify_filegroups>::=
<filegroup_updatability_option>::=
<set_database_options>::=
<optionspec>::=
<auto_option> ::=
<change_tracking_option> ::=
<cursor_option> ::=
<database_mirroring_option> ::=
<date_correlation_optimization_option> ::=
<db_encryption_option> ::=
<db_state_option> ::=
<db_update_option> ::=
<db_user_access_option> ::=
<delayed_durability_option> ::= <external_access_option> ::=
<FILESTREAM_options> ::=
<HADR_options> ::=
<parameterization_option> ::=
<recovery_option> ::=
<service_broker_option> ::=
<snapshot_option> ::=
<sql_option> ::=
<termination> ::=
-- Azure SQL Database Syntax
ALTER DATABASE database_name
{
MODIFY NAME =new_database_name
| MODIFY ( <edition_options> [, ... n] )
| SET { <set_database_options> }
}
<edition_options> ::=
{
MAXSIZE = { 100 MB | 500 MB |1 | 5 | 10 | 20 | 30 … 150 … 500 } GB
| EDITION = { 'web' | 'business' | 'basic' | 'standard' | 'Premium' }
| SERVICE_OBJECTIVE = { 'shared' | 'basic' | 'S0' | 'S1' | 'S2' | 'P1' | 'P2' | 'P3' }
}
<set_database_options> ::=
<db_update_option>
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
[;]
Аргументы
database_name
Имя изменяемой базы данных.Примечание
Этот параметр недоступен в автономной базе данных.
CURRENT
Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.
Определяет, что должна быть изменена текущая используемая база данных.
MODIFY NAME **=**new_database_name
Присваивает базе данных имя, указанное в аргументе new_database_name.COLLATE collation_name
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.
Задает параметры сортировки для базы данных. Значение collation_name может быть именем параметров сортировки Windows или именем параметров сортировки SQL. Если аргумент не указан, базе данных будут назначены параметры сортировки экземпляра SQL Server.
Список имен параметров сортировки Windows и SQL см. в разделе COLLATE (Transact-SQL).
MODIFY (MAXSIZE = [100 MB | 500 MB | 1 | 5 | 10 | 20 | 30 … 150…500] GB)
Применимо для следующих объектов: База данных SQL Azure
Указывает максимальный размер базы данных. Максимальный размер должен соответствовать допустимому набору значений для свойства EDITION базы данных. Смена максимального размера базы данных может потребовать также смены значения EDITION базы данных. В следующей таблице приведены поддерживаемые значения MAXSIZE и значения, заданные по умолчанию (D) для уровней служб База данных SQL.
MAXSIZE
Web Edition
Business Edition
Basic
Standard Edition
Premium
100 MB
√
√
√
√
500 MB
√
√
√
1 GB
√ (D)
√
√
√
2 GB
√ (D)
√
√
5 GB
√
√
√
10 GB
√ (D)
√
√
20 GB
√
√
√
30 GB
√
√
√
40 GB
√
√
√
50 GB
√
√
√
100 GB
√
√
√
150 GB
√
√
√
200 GB
√
√
250 GB
√ (D)
√
300 GB
√
400 GB
√
500 GB
√ (D)
Следующие правила применяются к аргументам MAXSIZE и EDITION:
Значение MAXSIZE, если оно задано, должно быть одним из допустимых значений, приведенных в таблице выше.
Если параметру MAXSIZE задано значение меньше 5 ГБ и значение EDITION не указано, то в качестве выпуска базы данных будет автоматически задан Web.
Если параметру MAXSIZE задано значение больше 5 ГБ и значение EDITION не указано, то в качестве выпуска базы данных будет автоматически задан Business.
Если параметр EDITION указан, а параметр MAXSIZE — нет, то в качестве выпуска будет использоваться значение по умолчанию. Например, если параметру EDITION задано значение Standard, а параметр MAXSIZE не задан, то параметру MAXSIZE будет автоматически присвоено значение 500 МБ.
Если не указаны ни MAXSIZE, ни EDITION, то параметру EDITION задается значение Web, а параметру MAXSIZE — значение 1 ГБ.
MODIFY (EDITION = [ 'web' | 'business' | 'basic' | 'standard' | 'premium' ] )
Применимо для следующих объектов: База данных SQL Azure
Изменяет выпуск базы данных. Уровень служб База данных SQL можно задавать или изменять с помощью параметра EDITION. Смена значения параметра EDITION завершается неудачей, если для свойства MAXSIZE базы данных задано значение вне допустимого диапазона, поддерживаемого этим выпуском.
Важно! Уровни службы Business и Web будут выведены из эксплуатации в сентябре 2015 г.Дополнительные сведения см. в разделе Часто задаваемые вопросы по выпускам Web и Business.
SERVICE_OBJECTIVE
Применимо для следующих объектов: База данных SQL Azure
Определяет уровень производительности. Дополнительные сведения об описании служб и о размере, выпусках и комбинациях служб см. в разделе Уровни обслуживания и уровни производительности служб баз данных Azure SQL. Если указанное значение SERVICE_OBJECTIVE не поддерживается для значения EDITION, вы получите сообщение об ошибке. Чтобы изменить значение SERVICE_OBJECTIVE с одного уровня на другой (например, с S1 на P1), необходимо также изменить значение EDITION.
<db_update_option> ::=
Применимо для следующих объектов: База данных SQL Azure
Управляет разрешениями на обновления базы данных.
{ READ_ONLY | READ_WRITE }
READ_ONLY
Пользователи могут считывать данные из базы данных, но не могут изменять их.READ_WRITE
База данных доступна для операций чтения и записи.
Примечание
Применительно к федеративным базам данных База данных SQL, инструкция SET { READ_ONLY | READ_WRITE } отключена.
<delayed_durability_option> ::=
Применимо для следующих объектов: С SQL Server 2014 по SQL Server 2014 включительно. |
Дополнительные сведения см. в разделах Параметры ALTER DATABASE SET (Transact-SQL) и Управление устойчивостью транзакций.
<file_and_filegroup_options >::=
Дополнительные сведения см. в разделе Параметры инструкции ALTER DATABASE для файлов и файловых групп (Transact-SQL).
<set_database_options >::=
Дополнительные сведения см. в разделах Параметры ALTER DATABASE SET (Transact-SQL), Зеркальное отображение базы данных ALTER DATABASE (Transact-SQL), ALTER DATABASE SET HADR (Transact-SQL) и Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).
Замечания
Чтобы удалить базу данных, используйте инструкцию DROP DATABASE.
Чтобы уменьшить размер базы данных, используйте предложение DBCC SHRINKDATABASE.
Инструкция ALTER DATABASE должна выполняться в режиме автоматической фиксации (режим управления транзакциями по умолчанию) и не разрешена в явной или неявной транзакции.
Состояние файла базы данных (например «в сети» или «вне сети») поддерживается независимо от состояния базы данных. Дополнительные сведения см. в разделе Состояния файла. Состояние файлов в пределах файловой группы определяет доступность файловой группы в целом. Чтобы файловая группа была доступна, необходимо, чтобы все файлы в файловой группе находились в режиме в сети. Если файловая группа вне сети, то любая попытка обращения к файловой группе с помощью инструкции SQL закончится ошибкой. При создании планов запросов для инструкций SELECT оптимизатор запросов избегает некластеризованных индексов и индексированных представлений, которые находятся в файловых группах вне сети. Это позволяет успешно выполнить эти инструкции. Однако если файловая группа, находящаяся в режиме вне сети, содержит кучу или кластеризованный индекс целевой таблицы, инструкция SELECT не будет выполнена. Кроме того, любая инструкция INSERT, UPDATE или DELETE, изменяющая таблицу с любым индексом в файловой группе, находящихся в режиме вне сети, также не будет выполнена.
Если база данных находится в состоянии RESTORING, выполнение большинства инструкций ALTER DATABASE закончится неудачей. Исключением является настройка параметров зеркального отображения базы данных. База данных может находиться в состоянии RESTORING во время выполнения операции восстановления или тогда, когда при операции восстановления базы данных или файла журнала происходит сбой из-за поврежденного файла резервной копии.
Кэш планов для экземпляра SQL Server очищается при установке одного из следующих параметров.
OFFLINE |
READ_WRITE |
ONLINE |
MODIFY FILEGROUP DEFAULT |
MODIFY_NAME |
MODIFY FILEGROUP READ_WRITE |
COLLATE |
MODIFY FILEGROUP READ_ONLY |
READ_ONLY |
PAGE_VERIFY |
Очистка кэша планов становится причиной перекомпиляции всех последующих планов выполнения и приводит к непредвиденному временному снижению производительности обработки запросов. Для каждого удаленного хранилища кэша в кэше планов журнал ошибок SQL Server содержит следующее информационное сообщение: "SQL Server столкнулся с событиями (%d) сброса кэша хранилища для "%s" (часть кэша планов) в связи с обслуживанием базы данных или операциями по перенастройке." Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого интервала времени.
Кроме того, кэш процедур сбрасывается в следующих случаях.
В базе данных включен параметр базы данных AUTO_CLOSE. Если отсутствуют ссылки соединений пользователя или базы данных, фоновая задача предпримет попытку закрыть и отключить базу данных автоматически.
Выполняется нескольких запросов в базе данных с параметрами по умолчанию. Затем база данных уничтожается.
Моментальный снимок базы данных для базы данных-источника удален.
Успешное перестроение журнала транзакций базы данных.
Восстановление резервной копии базы данных.
Отсоединение базы данных.
Изменение параметров сортировки в базе данных
Прежде чем применить другие параметры сортировки к базе данных, убедитесь, что соблюдены следующие условия.
Вы являетесь единственным пользователем базы данных в настоящее время.
Ни один объект, привязанный к схеме, не зависит от параметров сортировки базы данных.
Если следующие объекты, зависящие от параметров сортировки базы данных, существуют в базе данных, выполнение инструкции ALTER DATABASEdatabase_nameCOLLATE завершится ошибкой. SQL Server возвращает сообщение об ошибке для каждого объекта, блокирующего действие ALTER:
определяемые пользователем функции и представления, созданные с помощью предложения SCHEMABINDING;
вычисляемые столбцы;
ограничения CHECK;
возвращающие табличное значение функции, которые возвращают таблицы с символьными столбцами, имеющими параметры сортировки, унаследованные из параметров сортировки базы данных по умолчанию.
Информация о зависимостях не привязанных к схеме сущностей обновляется автоматически при изменении параметров сортировки базы данных.
При изменении параметров сортировки базы данных дубликаты любых системных имен для объектов базы данных не создаются. Если новые параметры сортировки вызывают повторяющиеся имена, следующие пространства имен могут вызвать сбой при изменении параметров сортировки базы данных:
имена объектов, такие как процедуры, таблицы, триггеры или представления;
имена схем;
участники, такие как группы, роли или пользователи;
имена скалярных типов, таких как системные и определяемые пользователем типы;
имена полнотекстовых каталогов;
имена столбцов или параметров в пределах объекта;
имена индексов в пределах таблицы.
Повторяющиеся имена, полученные с помощью новых параметров сортировки, могут быть причиной сбоя операции изменения, а SQL Server возвратит сообщение об ошибке, указывающее пространство имен, в котором был найден дубликат.
Просмотр сведений о базе данных
Для возврата сведений о базах данных, файлах и файловых группах можно использовать представления каталогов, системные функции и системные хранимые процедуры.
Разрешения
SQL Server
Необходимо разрешение ALTER на базу данных.
База данных SQL Azure
Изменять базу данных могут только имя входа субъект серверного уровня (созданное в процессе провизионирования) или члены роли базы данных dbmanager.
Примечание по безопасности |
---|
Владелец базы данных не может изменять базу данных, если он не является членом роли dbmanager. |
Примеры
А.Изменение имени базы данных
В следующем примере имя базы данных AdventureWorks2012 изменяется на Northwind.
USE master;
GO
ALTER DATABASE AdventureWorks2012
Modify Name = Northwind ;
GO
Б.Изменение параметров сортировки базы данных
В следующем примере создается база данных testdb, параметры сортировки которой имеют значение SQL_Latin1_General_CP1_CI_A. Затем имя базы данных testdb изменяется на COLLATE French_CI_AI.
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно. |
USE master;
GO
CREATE DATABASE testdb
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO
ALTER DATABASE testDB
COLLATE French_CI_AI ;
GO
См. также
Справочник
CREATE DATABASE (SQL Server Transact-SQL)
DATABASEPROPERTYEX (Transact-SQL)
SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
sys.database_files (Transact-SQL)
sys.database_mirroring_witnesses (Transact-SQL)
sys.data_spaces (Transact-SQL)
sys.master_files (Transact-SQL)