DROP DATABASE (Transact-SQL)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Удаляет одну или несколько пользовательских баз данных или моментальных снимков базы данных из экземпляра ядро СУБД SQL Server.

Соглашения о синтаксисе Transact-SQL

Синтаксис

Синтаксис SQL Server.

DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ]
[ ; ]

База данных SQL Azure, синтаксис системы платформы Azure Synapse Analytics и Analytics.

DROP DATABASE database_name
[ ; ]

Аргументы

IF EXISTS

Область применения: SQL Server 2016 (13.x) и более поздних версий

Условное удаление базы данных только в том случае, если она уже существует.

database_name

Указывает имя удаленной базы данных. Для просмотра списка баз данных используйте представление каталога sys.databases.

database_snapshot_name

Задает имя удаляемого моментального снимка базы данных.

Замечания

База данных может быть удалена независимо от ее состояния: вне сети, только для чтения, подозрительная и так далее. Чтобы отобразить текущее состояние базы данных, используйте sys.databases представление каталога.

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

При удалении базы данных необходимо выполнить резервное копирование базы данных master.

Удаление базы данных удаляет базу данных из экземпляра SQL Server и удаляет файлы физического диска, используемые базой данных. Если база данных или один из его файлов находится в автономном режиме при удалении, файлы диска не удаляются. Эти файлы можно удалить вручную с помощью диспетчера файлов, например проводник. Для удаления базы данных с текущего сервера без удаления файлов из файловой системы используйте процедуру sp_detach_db.

Предупреждение

В SQL Server 2016 (13.x) и более поздних версиях удаляется база данных с FILE_SNAPSHOT резервными копиями, связанными с ней, но файлы базы данных с связанными моментальными снимками не будут удалены, чтобы избежать недопустимых резервных копий, ссылающихся на эти файлы базы данных. Файл будет усечен, но не будет физически удален, чтобы сохранить FILE_SNAPSHOT резервные копии нетронутыми. Дополнительные сведения см. в статье о резервном копировании и восстановлении SQL Server с помощью Хранилище BLOB-объектов Azure.

SQL Server

Удаление моментального снимка базы данных удаляет моментальный снимок базы данных из экземпляра SQL Server и удаляет разреженные файлы физической файловой системы NTFS, используемые моментальным снимком. Сведения об использовании разреженных файлов по моментальным снимкам базы данных см. в разделе "Моментальные снимки базы данных" (SQL Server). Удаление моментального снимка базы данных очищает записи в кэше планов, связанном с моментальным снимком базы данных, а не экземпляром в целом. Очистка кэша планов становится причиной перекомпиляции всех последующих планов выполнения и приводит к непредвиденному временному снижению производительности обработки запросов.

Для каждого очищаемого кэша в кэше планов журнал ошибок SQL Server содержит следующее информационное сообщение. Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого интервала времени.

SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.

Совместимость

SQL Server

Чтобы удалить базу данных, опубликованную для репликации транзакций либо опубликованную или подписанную на репликацию слиянием, вначале необходимо удалить репликацию из базы данных. Если база данных повреждена или репликация не может быть удалена (или оба), в большинстве случаев база данных по-прежнему может быть удалена с помощью ALTER DATABASE настройки базы данных в автономном режиме, а затем удалить ее.

Если база данных участвует в доставке журнала, отмените доставку журнала перед удалением базы данных. Дополнительные сведения см. в разделе о доставке журналов (SQL Server).

Ограничения

Системные базы данных не могут быть удалены.

Оператор DROP DATABASE должен выполняться в режиме автокоммитирования и не допускается в явной или неявной транзакции. Режим автоматической фиксации — это режим управления транзакцией по умолчанию.

Предупреждение

Вы не можете удалить базу данных, используемую в настоящее время. Это означает, что существуют блокировки на чтение или запись любым пользователем. Одним из способов удаления пользователей из базы данных является установка ALTER DATABASE базы данных на SINGLE_USER. В этой стратегии следует выполнить ALTER DATABASE и DROP DATABASE в том же пакете, чтобы избежать другого подключения, допускающего один сеанс пользователя. Дополнительные сведения см. в примере D.

SQL Server

Любые моментальные снимки базы данных должны быть удалены перед удалением базы данных.

Удаление базы данных для Stretch Database не удаляет удаленные данные. В таком случае удаленные данные следует удалять вручную.

Внимание

Stretch Database устарел в SQL Server 2022 (16.x) и База данных SQL Azure. Эта функция будет удалена в будущей версии ядро СУБД. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

База данных SQL Azure

Чтобы удалить базу данных, необходимо подключиться к ней master .

Инструкция DROP DATABASE должна быть единственной инструкцией в пакете SQL, и одновременно можно удалить только одну базу данных.

Azure Synapse Analytics

Чтобы удалить базу данных, необходимо подключиться к ней master .

Инструкция DROP DATABASE должна быть единственной инструкцией в пакете SQL, и одновременно можно удалить только одну базу данных.

Разрешения

SQL Server

CONTROL Требуется разрешение на базу данных, разрешение или ALTER ANY DATABASE членство в db_owner предопределенных ролей базы данных.

База данных SQL Azure

Удалить базу данных могут только пользователи с именем входа субъекта серверного уровня (созданного процессом подготовки) или члены роли dbmanager базы данных.

Система платформы аналитики (PDW)

CONTROL Требуется разрешение на базу данных, разрешение или ALTER ANY DATABASE членство в db_owner предопределенных ролей базы данных.

Примеры

А. Удаление одной базы данных

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

DROP DATABASE Sales;

B. Удаление нескольких баз данных

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

DROP DATABASE Sales, NewSales;

C. Удаление моментального снимка базы данных

В следующем примере из базы данных удаляется моментальный снимок с именем sales_snapshot0600 без влияния на базу данных-источник.

DROP DATABASE sales_snapshot0600;

D. Удаление базы данных после проверки наличия базы данных

В следующем примере сначала проверяется, существует ли база данных с именем Sales. Если да, пример переводит базу данных с именем Sales в однопользовательский режим, чтобы применить принудительное отключение всех остальных сеансов, а затем удаляет базу данных. Дополнительные сведения о режиме SINGLE_USER см. в описании параметров ALTER DATABASE SET.

USE tempdb;

GO

DECLARE @SQL AS NVARCHAR (1000);

IF EXISTS (SELECT 1
           FROM sys.databases
           WHERE [name] = N'Sales')
    BEGIN
        SET @SQL = N'USE [Sales];

                 ALTER DATABASE Sales SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
                 USE [tempdb];

                 DROP DATABASE Sales;';
        EXECUTE (@SQL);
    END