Удаление базы данных-получателя из группы доступности (SQL Server)
В этом разделе описывается удаление базы данных-получателя из группы доступности AlwaysOn с помощью среды SQL Server Management Studio, Transact-SQL или PowerShell в SQL Server.
Требования и ограничения
- Эта задача поддерживается только на вторичных репликах. Необходимо подключиться к экземпляру сервера, размещающему вторичную реплику, из которой удаляется база данных.
Разрешения
Необходимо разрешение ALTER на базу данных.
Использование среды SQL Server Management Studio
Удаление базы данных-получателя из группы доступности
- В обозревателе объектов подключитесь к экземпляру сервера, размещающему вторичную реплику, из которой требуется удалить одну или несколько баз данных-получателей, и разверните дерево сервера.
- Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности .
- Выберите группу доступности и разверните узел Базы данных доступности .
- Этот шаг зависит от того, удаляется несколько баз данных или только одна база данных.
- Чтобы удалить несколько баз данных, используйте панель Подробности обозревателя объектов , чтобы просмотреть и выбрать базы данных, которые требуется удалить. Дополнительные сведения см. в разделе Использование раздела «Подробности обозревателя объектов» для мониторинга групп доступности (среда SQL Server Management Studio).
- Чтобы удалить одну базу данных, выберите ее в обозревателе объектов или на панели Подробности обозревателя объектов .
- Щелкните правой кнопкой мыши выбранную базу данных или базы данных и выберите в контекстном меню команду Удалить базу данных-получателя .
- В диалоговом окне Удаление базы данных из группы доступности нажмите кнопку ОК, чтобы удалить все выбранные базы данных. Если все перечисленные базы данных удалять не нужно, нажмите кнопку Отмена.
Использование Transact-SQL
Удаление базы данных-получателя из группы доступности
- Подключитесь к экземпляру сервера, на котором находится дополнительная реплика.
- Используйте предложение SET HADR в инструкции ALTER DATABASE следующим образом: ALTER DATABASE имя_базы_данных SET HADR OFF где имя_базы_данных ― имя базы данных-получателя, удаляемой из группы доступности, к которой она относится. В следующем примере локальная база данных-получатель MyDb2 удаляется из соответствующей группы доступности.
ALTER DATABASE MyDb2 SET HADR OFF; GO
Использование PowerShell
Удаление базы данных-получателя из группы доступности
- Перейдите в каталог (cd) экземпляра сервера, на котором размещается вторичная реплика.
- Используйте командлет Remove-SqlAvailabilityDatabase , указав имя базы данных доступности, которую требуется удалить из группы доступности. Когда установлено подключение к экземпляру сервера, на котором находится вторичная реплика, из группы доступности удаляется только локальная база данных-получатель. Например, следующая команда удаляет базу данных-получатель MyDb8 из вторичной реплики, размещенной на экземпляре сервера SecondaryComputer\Instance . Синхронизация данных для удаленных баз данных-получателей прекращается. Эта команда не влияет на базу данных-источник и на любые другие базы данных-получатели.
Remove-SqlAvailabilityDatabase ` -Path SQLSERVER:\Sql\SecondaryComputer\InstanceName\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb8
Примечание Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде PowerShell SQL Server . Дополнительные сведения см. в разделе Get Help SQL Server PowerShell.
Настройка и использование поставщика SQL Server PowerShell
Дальнейшие действия. После удаления базы данных-получателя из группы доступности
После удаления базы данных-получателя она перестает входить в группу доступности, кроме того, из группы доступности удаляются все сведения об этой базе данных-получателе. Удаленная база данных-получатель переводится в состояние RESTORING.
В течение некоторого времени после удаления базы данных-получателя можно перезапустить синхронизацию данных AlwaysOn в базе данных, повторно присоединив ее к группе доступности. Дополнительные сведения см. в статье Присоединение базы данных-получателя к группе доступности (SQL Server).
В этот момент поступить с удаленной базой данных-получателем можно следующим образом.
- Если эта база данных-получатель больше не нужна, ее можно удалить. Дополнительные сведения см. в разделе DROP DATABASE (Transact-SQL) или Удаление базы данных.
- Если после удаления базы данных-получателя из группы доступности она еще может понадобиться, ее можно восстановить. Однако при восстановлении удаленной базы данных-получателя в режиме «в сети» окажутся две разные базы данных с одним именем. Необходимо обеспечить, чтобы клиенты могли получить доступ только к текущей базе данных-источнику. Дополнительные сведения см. в разделе Восстановление базы данных без восстановления данных (Transact-SQL).
Определение структуры данных
Для создания базы данных используется команда CREATE DATABASE . Она имеет следующий синтаксис:
CREATE DATABASE [IF NOT EXISTS] имя_базы_даных;
В конце команды указывается имя базы данных.
Первая форма CREATE DATABASE имя_базы_даных пытается создать базу данных, но если такая база данных уже существует, то операция возвратит ошибку.
Вторая форма CREATE DATABASE IF NOT EXISTS имя_базы_даных пытается создать базу данных, если на сервере отсутствует бд с таким именем.
Например, в MySQL Workbench CE (или в MySQL Command Line Client) выполним следующую команду:
CREATE DATABASE productsdb;
Она создаст на сервере бд productsdb.

Установка базы данных
После создания БД с ней производятся различные операции: создание таблиц, добавление и получение данных и т.д. Но чтобы установить производить эти операции, надо установить определенную базу данных в качестве используемой. Для этого применяется оператор USE :
USE productsdb;
Удаление базы данных
Для удаления базы данных применяется команда DROP DATABASE , которая имеет следующий синтаксис:
DROP DATABASE [IF EXISTS] имя_базы_даных;
Первая форма DROP DATABASE имя_базы_даных пытается удалить базу данных, но если такая база данных отсутствует на сервере, то операция возвратит ошибку.
Вторая форма DROP DATABASE IF EXISTS имя_базы_даных пытается удалить базу данных, если на сервере имеется бд с таким именем.
Например, удалим выше созданную базу данных productsdb:
DROP DATABASE productsdb;
DROP DATABASE (Transact-SQL)
Удаляет одну или несколько пользовательских баз данных или моментальных снимков базы данных из экземпляра SQL Server.
Синтаксис
-- SQL Server Syntax DROP DATABASE [ IF EXISTS ] < database_name | database_snapshot_name >[ . n ] [;]
-- Azure SQL Database, Azure Synapse Analytics and Analytics Platform System Syntax DROP DATABASE database_name [;]
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
IF EXISTS
Применимо к: SQL Server (SQL Server 2016 (13.x) до текущей версии.
Условное удаление базы данных только в том случае, если она уже существует.
database_name — задает имя удаляемой базы данных. Для просмотра списка баз данных используйте представление каталога sys.databases.
database_snapshot_name применимо к SQL Server 2008 (10.0.x) и более поздним версиям.
Задает имя удаляемого моментального снимка базы данных.
Общие замечания
База данных может быть удалена независимо от ее состояния: вне сети, только для чтения, подозрительная и так далее. Для просмотра текущего состояния базы данных используйте представление каталога sys.databases.
Удаленная база данных может быть повторно создана только с помощью восстановления из резервной копии. Резервное копирование моментальных снимков базы данных произвести невозможно, поэтому они не могут быть восстановлены.
При удалении базы данных необходимо выполнить резервное копирование базы данных master.
Удаление базы данных удаляет базу данных из экземпляра SQL Server и удаляет файлы физического диска, используемые базой данных. Если база данных или один из ее файлов во время удаления находится в режиме вне сети, файлы с диска не удаляются. Эти файлы можно удалить вручную при помощи обозревателя Windows. Для удаления базы данных с текущего сервера без удаления файлов из файловой системы используйте процедуру sp_detach_db.
Удаление файла базы данных, имеющего связанные с ним резервные копии FILE_SNAPSHOT, выполнится успешно, однако файлы базы данных, с которыми связаны моментальные снимки, не будут удалены во избежание объявления недействительными резервных копий, ссылающихся на файл базы данных. Файл усекается, но физически не удаляется, чтобы сохранить резервные копии FILE_SNAPSHOT без изменений. Дополнительные сведения см. в статье sql Server Backup and Restore with Microsoft Хранилище BLOB-объектов Azure. Применимо к: SQL Server 2016 (13.x) до текущей версии.
SQL Server
Удаление моментального снимка базы данных удаляет моментальный снимок базы данных из экземпляра SQL Server и удаляет разреженные файлы файловой системы NTFS, используемые моментальным снимком. Сведения об использовании разреженных файлов для моментальных снимков баз данных см. в статье Моментальные снимки базы данных. Удаление моментального снимка базы данных очищает кэш планов для экземпляра SQL Server. Очистка кэша планов становится причиной перекомпиляции всех последующих планов выполнения и приводит к непредвиденному временному снижению производительности обработки запросов. Для каждого очищаемого хранилища кэша в кэше планов журнал ошибок SQL Server содержит следующее информационное сообщение: «SQL Server обнаружил %d вхождения кэша для кэша «%s» кэша (часть кэша планов) из-за некоторых операций обслуживания базы данных или перенастройки». Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого интервала времени.
Совместимость
SQL Server
Чтобы удалить базу данных, опубликованную для репликации транзакций либо опубликованную или подписанную на репликацию слиянием, вначале необходимо удалить репликацию из базы данных. Если база данных повреждена или репликация не может быть удалена, скорее всего, базу данных все равно можно будет удалить, использовав инструкцию ALTER DATABASE для перевода базы данных в режим вне сети, после чего удалить ее.
Если база данных участвует в доставке журнала, отмените доставку журнала перед удалением базы данных. Дополнительные сведения см. в разделе Сведения о доставке журналов.
Ограничения
Инструкция DROP DATABASE должна выполняться в режиме автоматической фиксации и не разрешена в явной или неявной транзакции. Режим автоматической фиксации — это режим управления транзакцией по умолчанию.
Удалить базу данных, которая используется в текущий момент времени, невозможно. Это означает, что существуют блокировки на чтение или запись любым пользователем. Одним из способов отключить пользователей от базы данных является использование инструкции ALTER DATABASE для перевода базы данных в режим SINGLE_USER. В этой стратегии следует выполнять инструкции ALTER DATABASE и DROP DATABASE в одном и том же пакете, чтобы избежать появления другого подключения, занимающего один разрешенный пользовательский сеанс. См. пример Г ниже.
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. Удаление нескольких баз данных
Применимо: SQL Server 2008 (10.0.x) и более поздних версий.
В следующем примере удаляется каждая из перечисленных баз данных.
DROP DATABASE Sales, NewSales;
C. Удаление моментального снимка базы данных
Применимо: SQL Server 2008 (10.0.x) и более поздних версий.
В следующем примере из базы данных удаляется моментальный снимок с именем sales_snapshot0600 без влияния на базу данных-источник.
DROP DATABASE sales_snapshot0600;
D. Удаление базы данных после проверки ее существования
В следующем примере сначала проверяется, существует ли база данных с именем Sales . Если да, пример переводит базу данных с именем Sales в однопользовательский режим, чтобы применить принудительное отключение всех остальных сеансов, а затем удаляет базу данных. Дополнительные сведения о режиме SINGLE_USER см. в описании параметров ALTER DATABASE SET.
USE tempdb; GO DECLARE @SQL 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;'; EXEC (@SQL); END;
См. также
- ALTER DATABASE
- CREATE DATABASE
- EVENTDATA
- sys.databases
Обратная связь
Были ли сведения на этой странице полезными?
Как удалить базу данных
1)Запустить программу «Microsoft SQL Management Studio».
2)Выполнить подключение к БД со своей учетной записью.
3)В окне «Object Explorer» выбрать «Databases».

4)Нажать правой кнопкой по БД «BioTime 8».
5)В контекстном меню выбрать «Delete».

6)Установить галочку «Close existing connections».

7)Нажать кнопку «ОК».

B. PostgerSQL:
1) Запустить программу «pg Admin 4»

2)Ввести пароль администратора для соединения с БД.

3)В окне «Browser» выбрать «Servers»

4)Нажать правой кнопкой по БД «BioTime 8».
5)В контекстном меню выбрать «Delete/Drop».

6)Согласиться, с удалением БД, нажав кнопку «YES».