ALTER DATABASE (Transact-SQL)
Изменяет базу данных или файлы и файловые группы, связанные с базой данных. Добавляет или удаляет файлы и файловые группы из базы данных, изменяет атрибуты базы данных или ее файлов и файловых групп, изменяет параметры сортировки базы данных и устанавливает параметры базы данных. Моментальные снимки базы данных изменить нельзя. Чтобы изменить параметры базы данных, связанные с репликацией, используйте процедуру sp_replicationdboption.
Так как синтаксис 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, относящихся к уровню совместимости базы данных.
Синтаксические обозначения в Transact-SQL
Синтаксис
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> ::=
<external_access_option> ::=
<FILESTREAM_options> ::=
<HADR_options> ::=
<parameterization_option> ::=
<recovery_option> ::=
<service_broker_option> ::=
<snapshot_option> ::=
<sql_option> ::=
<termination> ::=
Аргументы
database_name
Имя изменяемой базы данных.Примечание Этот параметр недоступен в автономной базе данных.
CURRENT
Определяет, что должна быть изменена текущая используемая база данных.MODIFY NAME **=**new_database_name
Присваивает базе данных имя, указанное в аргументе new_database_name.COLLATE collation_name
Задает параметры сортировки для базы данных. Значение collation_name может быть именем параметров сортировки Windows или именем параметров сортировки SQL. Если аргумент не указан, базе данных будут назначены параметры сортировки экземпляра SQL Server.Список имен параметров сортировки Windows и SQL см. в разделе COLLATE (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 Server 2005 и более поздних версиях состояние файла базы данных (например, в сети или вне сети) поддерживается независимо от состояния базы данных. Дополнительные сведения см. в разделе Состояния файла. Состояние файлов в пределах файловой группы определяет доступность файловой группы в целом. Чтобы файловая группа была доступна, необходимо, чтобы все файлы в файловой группе находились в режиме «в сети». Если файловая группа вне сети, то любая попытка обращения к файловой группе с помощью инструкции 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 возвратит сообщение об ошибке, указывающее пространство имен, в котором был найден дубликат.
Просмотр сведений о базе данных
Для возврата сведений о базах данных, файлах и файловых группах можно использовать представления каталогов, системные функции и системные хранимые процедуры.
Разрешения
Необходимо разрешение ALTER на базу данных.
Примеры
А.Изменение имени базы данных
В следующем примере имя базы данных AdventureWorks2012 изменяется на Northwind.
USE master;
GO
ALTER DATABASE AdventureWorks2012
Modify Name = Northwind ;
GO
Б.Изменение параметров сортировки базы данных
В следующем примере создается база данных testdb, параметры сортировки которой имеют значение SQL_Latin1_General_CP1_CI_A. Затем имя базы данных testdb изменяется на COLLATE French_CI_AI.
USE master;
GO
CREATE DATABASE testdb
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO
ALTER DATABASE testDB
COLLATE French_CI_AI ;
GO
См. также
Справочник
CREATE DATABASE (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)