Поделиться через


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

  • Выполняется нескольких запросов в базе данных с параметрами по умолчанию. Затем база данных уничтожается.

  • Моментальный снимок базы данных для базы данных-источника удален.

  • Успешное перестроение журнала транзакций базы данных.

  • Восстановление резервной копии базы данных.

  • Отсоединение базы данных.

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

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

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

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

    Если следующие объекты, зависящие от параметров сортировки базы данных, существуют в базе данных, выполнение инструкции 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)

DROP DATABASE (Transact-SQL)

SET TRANSACTION ISOLATION LEVEL (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_configure (Transact-SQL)

sp_spaceused (Transact-SQL)

sys.databases (Transact-SQL)

sys.database_files (Transact-SQL)

sys.database_mirroring_witnesses (Transact-SQL)

sys.data_spaces (Transact-SQL)

sys.filegroups (Transact-SQL)

sys.master_files (Transact-SQL)

Основные понятия

Системные базы данных