ALTER DATABASE (Transact-SQL)

Изменяет базу данных или файлы и файловые группы, связанные с базой данных. Добавляет или удаляет файлы и файловые группы из базы данных, изменяет атрибуты базы данных или ее файлов и файловых групп, изменяет параметры сортировки базы данных и устанавливает параметры базы данных. Моментальные снимки базы данных изменить нельзя. Чтобы изменить параметры базы данных, связанные с репликацией, используйте процедуру sp_replicationdboption.

Так как синтаксис ALTER DATABASE имеет значительную длину, его разделяют на несколько частей:

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

ALTER DATABASE database_name 
{
  | 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> ::=
    <parameterization_option> ::=
    <recovery_option> ::= 
    <service_broker_option> ::=
    <snapshot_option> ::=
    <sql_option> ::= 
    <termination> ::=

Аргументы

  • database_name
    Имя изменяемой базы данных.

  • 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 >::=

<set_database_options >::=

Дополнительные сведения см. в разделе Параметры ALTER DATABASE SET (Transact-SQL).

Замечания

Чтобы удалить базу данных, используйте инструкцию DROP DATABASE.

Чтобы уменьшить размер базы данных, используйте предложение DBCC SHRINKDATABASE.

Инструкция ALTER DATABASE должна выполняться в режиме автоматической фиксации (режим управления транзакциями по умолчанию) и не разрешена в явной или неявной транзакции. Дополнительные сведения см. в разделе Автоматическая фиксация транзакций.

В SQL Server 2005 и более поздних версиях состояние файла базы данных (например, оперативное или автономное) поддерживается независимо от состояния базы данных. Дополнительные сведения см. в разделе Состояния файла. Состояние файлов в пределах файловой группы определяет доступность файловой группы в целом. Чтобы файловая группа была доступна, необходимо, чтобы все файлы в файловой группе находились в оперативном режиме. Если файловая группа автономна, то любая попытка обращения к файловой группе с помощью инструкции SQL закончится ошибкой. При создании планов запроса для инструкций SELECT оптимизатор запроса избегает некластеризованных индексов и индексированных представлений, которые находятся в автономных файловых группах. Это позволяет успешно выполнить эти инструкции. Однако если файловая группа, находящаяся в автономном режиме, содержит область памяти или кластеризованный индекс целевой таблицы, инструкция SELECT не сможет быть выполнена. Кроме того, любая инструкция INSERT, UPDATE или DELETE, производящая изменения в таблице с любым индексом, расположенным в автономной файловой группе, также не будет выполнена.

Если база данных находится в состоянии RESTORING, выполнение большинства инструкций ALTER DATABASE закончится неудачей. Исключением является настройка параметров зеркального отображения базы данных. База данных может находиться в состоянии RESTORING во время выполнения операции восстановления или тогда, когда при операции восстановления базы данных или файла журнала происходит сбой из-за поврежденного файла резервной копии. Дополнительные сведения см. в разделе Действия при ошибках восстановления SQL Server, вызванных повреждением резервных копий.

Кэш планов для экземпляра SQL Server очищается при установке одного из следующих параметров.

OFFLINE

READ_WRITE

ONLINE

MODIFY FILEGROUP DEFAULT

MODIFY_NAME

MODIFY FILEGROUP READ_WRITE

COLLATE

MODIFY FILEGROUP READ_ONLY

READ_ONLY

Удаление кэша планов приводит к перекомпиляции всех последующих планов выполнения и может вызвать мгновенное, временное снижение производительности запросов. В SQL Server для каждого удаленного хранилища кэша в кэше планов журнал ошибок содержит следующее информационное сообщение: "«SQL Server обнаружил %d экземпляров, записанных на диск хранилищ кэша (часть кэша планов) для хранилища кэша "%s" в результате операций по обслуживанию или изменению настройки базы данных». Это сообщение протоколируется каждые пять минут при записи кэша в течение этого временного интервала.

Изменение параметров сортировки в базе данных

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

  1. Вы являетесь единственным пользователем базы данных в настоящее время.

  2. Ни один объект, привязанный к схеме, не зависит от параметров сортировки базы данных.

    Если следующие объекты, зависящие от параметров сортировки базы данных, существуют в базе данных, инструкция ALTER DATABASEdatabase_nameCOLLATE не будет выполнена. SQL Server возвратит сообщение об ошибке для каждого объекта, блокирующего операцию ALTER.

    • определяемые пользователем функции и представления, созданные с помощью предложения SCHEMABINDING;

    • вычисляемые столбцы;

    • ограничения CHECK;

    • возвращающие табличное значение функции, которые возвращают таблицы с символьными столбцами, имеющими параметры сортировки, унаследованные из параметров сортировки базы данных по умолчанию.

    Информация о зависимостях не привязанных к схеме сущностей обновляется автоматически при изменении параметров сортировки базы данных. Дополнительные сведения см. в разделе Основные сведения о зависимостях SQL.

  3. При изменении параметров сортировки базы данных дубликаты любых системных имен для объектов базы данных не создаются.

    Следующие пространства имен могут вызвать сбой при изменении параметров сортировки базы данных, если при новых параметрах сортировки имена результатов повторяются:

    • имена объектов, такие как процедуры, таблицы, триггеры или представления;

    • имена схем;

    • участники, такие как группы, роли или пользователи;

    • имена скалярных типов, таких как системные и определяемые пользователем типы;

    • имена полнотекстовых каталогов;

    • имена столбцов или параметров в пределах объекта;

    • имена индексов в пределах таблицы.

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

Просмотр сведений о базе данных

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

Разрешения

Необходимо разрешение ALTER на базу данных.

Примеры

А. Изменение имени базы данных

В следующем примере имя базы данных AdventureWorks изменяется на Northwind.

USE master;
GO
ALTER DATABASE AdventureWorks
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