DROP DATABASE (Transact-SQL)DROP DATABASE (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simSQL Data Warehouse do Azure simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Remove um ou mais bancos de dados de usuário ou instantâneos do banco de dados de uma instância do SQL ServerSQL Server.Removes one or more user databases or database snapshots from an instance of SQL ServerSQL Server.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

-- SQL Server Syntax
DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ] [;]
-- Azure SQL Database, Azure SQL Data Warehouse and Analytics Platform System Syntax
DROP DATABASE database_name [;]

ArgumentosArguments

IF EXISTS Aplica-se a: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) até versão atual).IF EXISTS Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through current version).

Remove condicionalmente o banco de dados somente se ele já existe.Conditionally drops the database only if it already exists.

database_name Especifica o nome do banco de dados a ser removido.database_name Specifies the name of the database to be removed. Para exibir uma lista de bancos de dados, use a exibição de catálogo sys.databases.To display a list of databases, use the sys.databases catalog view.

database_snapshot_name Aplica-se a: SQL Server 2008SQL Server 2008 até SQL Server 2017SQL Server 2017.database_snapshot_name Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Especifica o nome de um instantâneo do banco de dados a ser removido.Specifies the name of a database snapshot to be removed.

Comentários geraisGeneral Remarks

Um banco de dados pode ser removido independentemente de seu estado: offline, somente leitura, suspeito e assim por diante.A database can be dropped regardless of its state: offline, read-only, suspect, and so on. Para exibir o estado atual de um banco de dados, use a exibição de catálogo sys.databases.To display the current state of a database, use the sys.databases catalog view.

Um banco de dados cancelado poderá ser recriado somente por meio da restauração de um backup.A dropped database can be re-created only by restoring a backup. Não é possível efetuar backup de instantâneos do banco de dados, portanto, eles não podem ser restaurados.Database snapshots cannot be backed up and, therefore, cannot be restored.

Quando um banco de dados é removido, o banco de dados mestre deve ser copiado em backup.When a database is dropped, the master database should be backed up.

O descarte de um banco de dados exclui o banco de dados de uma instância do SQL ServerSQL Server e exclui os arquivos de disco físicos usados pelo banco de dados.Dropping a database deletes the database from an instance of SQL ServerSQL Server and deletes the physical disk files used by the database. Se o banco de dados ou qualquer um de seus arquivos estiverem offline quando forem cancelados, os arquivos em disco não serão excluídos.If the database or any one of its files is offline when it is dropped, the disk files are not deleted. Esses arquivos podem ser excluídos manualmente usando o Windows Explorer.These files can be deleted manually by using Windows Explorer. Para remover um banco de dados do servidor atual sem excluir os arquivos do sistema de arquivos, use sp_detach_db.To remove a database from the current server without deleting the files from the file system, use sp_detach_db.

Aviso

A remoção de um banco de dados que tem backups de FILE_SNAPSHOT associados a ele terá êxito, mas os arquivos de banco de dados que têm instantâneos associados não serão excluídos, para evitar a anulação dos backups que referenciam esses arquivos de banco de dados.Dropping a database that has FILE_SNAPSHOT backups associated with it will succeed, but the database files that have associated snapshots will not be deleted to avoid invalidating the backups referring to these database files. O arquivo será truncado, mas não será fisicamente excluído para manter os backups de FILE_SNAPSHOT intactos.The file will be truncated, but will not be physically deleted in order to keep the FILE_SNAPSHOT backups intact. Para obter mais informações, veja Backup e restauração do SQL Server com o Serviço de Armazenamento de Blobs do Microsoft Azure.For more information, see SQL Server Backup and Restore with Microsoft Azure Blob Storage Service. Aplica-se a: SQL Server 2016 (13.x)SQL Server 2016 (13.x) à versão atual.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) through current version.

SQL ServerSQL Server

O descarte de um instantâneo de banco de dados o exclui de uma instância do SQL ServerSQL Server e exclui os arquivos físicos esparsos do Sistema de Arquivos NTFS utilizados pelo instantâneo.Dropping a database snapshot deletes the database snapshot from an instance of SQL ServerSQL Server and deletes the physical NTFS File System sparse files used by the snapshot. Para obter informações sobre como usar arquivos esparsos por instantâneos de banco de dados, consulte Instantâneos de banco de dados.For information about using sparse files by database snapshots, see Database Snapshots. O cancelamento de um instantâneo do banco de dados limpa o cache de plano para a instância do SQL ServerSQL Server.Dropping a database snapshot clears the plan cache for the instance of SQL ServerSQL Server. A limpeza do cache de planos gera uma recompilação de todos os planos de execução subsequentes e pode provocar uma redução repentina e temporária do desempenho de consultas.Clearing the plan cache causes a recompilation of all subsequent execution plans and can cause a sudden, temporary decrease in query performance. Para cada armazenamento em cache limpo no cache de planos, o log de erros do SQL ServerSQL Server contém a seguinte mensagem informativa: "SQL ServerSQL Server encontrou %d ocorrências de liberação de armazenamento em cache para o armazenamento em cache '%s' (parte do cache de planos) devido a operações de reconfiguração ou manutenção do banco de dados".For each cleared cachestore in the plan cache, the SQL ServerSQL Server error log contains the following informational message: " SQL ServerSQL 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". Essa mensagem é registrada a cada cinco minutos, contanto que o cache seja liberado dentro desse intervalo de tempo.This message is logged every five minutes as long as the cache is flushed within that time interval.

InteroperabilidadeInteroperability

SQL ServerSQL Server

Para cancelar um banco de dados publicado para replicação transacional ou publicado ou inscrito para replicação de mesclagem, você deve primeiro remover a replicação do banco de dados.To drop a database published for transactional replication, or published or subscribed to merge replication, you must first remove replication from the database. Se um banco de dados estiver danificado ou não for possível remover a replicação primeiro ou ambos, na maioria dos casos você ainda pode cancelar o banco de dados usando ALTER DATABASE para definir o banco de dados offline e depois cancelá-lo.If a database is damaged or replication cannot first be removed or both, in most cases you still can drop the database by using ALTER DATABASE to set the database offline and then dropping it.

Se o banco de dados estiver envolvido em envio de logs, remova o envio do log antes de cancelá-lo.If the database is involved in log shipping, remove log shipping before dropping the database. Para obter mais informações, consulte Sobre o Envio de Logs.For more information, see About Log Shipping.

Limitações e RestriçõesLimitations and Restrictions

Os bancos de dados do sistema não podem ser removidos.System databases cannot be dropped.

Uma instrução DROP DATABASE deve ser executada no modo de confirmação automática e não é permitida uma transação explícita ou implícita.The DROP DATABASE statement must run in autocommit mode and is not allowed in an explicit or implicit transaction. O modo de confirmação automática é o modo padrão de gerenciamento de transações.Autocommit mode is the default transaction management mode.

Você não pode cancelar um banco de dados que estiver sendo utilizado.You cannot drop a database currently being used. Isso significa abrir para leitura ou gravação por qualquer usuário.This means open for reading or writing by any user. Uma forma de remover usuários do banco de dados é usar ALTER DATABASE para definir o banco de dados como SINGLE_USER.One way to remove users from the database is to use ALTER DATABASE to set the database to SINGLE_USER.

Aviso

Essa não é uma abordagem à prova de falhas, pois que a primeira conexão consecutiva feita por qualquer thread receberá o thread SINGLE_USER, fazendo com que a conexão falhe.This is not a fail-proof approach, since first consecutive connection made by any thread will receive the SINGLE_USER thread, causing your connection to fail. O SQL Server não fornece um modo interno para remover bancos de dados sob carga.Sql server does not provide a built-in way to drop databases under load.

SQL ServerSQL Server

Qualquer instantâneo de banco de dados em um banco de dados deve ser cancelado antes que o banco de dados seja cancelado.Any database snapshots on a database must be dropped before the database can be dropped.

A remoção de um banco de dados permite que o Stretch Database não remova os dados remotos.Dropping a database enable for Stretch Database does not remove the remote data. Se você deseja excluir os dados remotos, precisa removê-los manualmente.If you want to delete the remote data, you have to remove it manually.

Banco de dados SQL do AzureAzure SQL Database

Você deve estar conectado ao banco de dados mestre para descartar um banco de dados.You must be connected to the master database to drop a database.

A instrução DROP DATABASE deve ser a única instrução em um lote de SQL, e você poderá descartar apenas um banco de dados de cada vez.The DROP DATABASE statement must be the only statement in a SQL batch and you can drop only one database at a time.

Azure SQL Data WarehouseAzure SQL Data Warehouse

Você deve estar conectado ao banco de dados mestre para descartar um banco de dados.You must be connected to the master database to drop a database.

A instrução DROP DATABASE deve ser a única instrução em um lote de SQL, e você poderá descartar apenas um banco de dados de cada vez.The DROP DATABASE statement must be the only statement in a SQL batch and you can drop only one database at a time.

PermissõesPermissions

SQL ServerSQL Server

Exige a permissão CONTROL no banco de dados, a permissão ALTER ANY DATABASE ou a associação na função de banco de dados fixa db_owner.Requires the CONTROL permission on the database, or ALTER ANY DATABASE permission, or membership in the db_owner fixed database role.

Banco de dados SQL do AzureAzure SQL Database

Somente o logon da entidade de segurança no nível do servidor (criado pelo processo de provisionamento) ou os membros da função de banco de dados dbmanager podem remover um banco de dados.Only the server-level principal login (created by the provisioning process) or members of the dbmanager database role can drop a database.

Parallel Data WarehouseParallel Data Warehouse

Exige a permissão CONTROL no banco de dados, a permissão ALTER ANY DATABASE ou a associação na função de banco de dados fixa db_owner.Requires the CONTROL permission on the database, or ALTER ANY DATABASE permission, or membership in the db_owner fixed database role.

ExemplosExamples

A.A. Removendo um único banco de dadosDropping a single database

O exemplo a seguir remove o nome do banco de dados Sales:The following example removes the Sales database.

DROP DATABASE Sales;

B.B. Removendo vários bancos de dadosDropping multiple databases

Aplica-se a: do SQL Server 2008SQL Server 2008 ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

O exemplo a seguir remove cada um dos bancos de dados listados.The following example removes each of the listed databases.

DROP DATABASE Sales, NewSales;

C.C. Removendo um instantâneo de banco de dadosDropping a database snapshot

Aplica-se a: do SQL Server 2008SQL Server 2008 ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

O exemplo a seguir remove um instantâneo do banco de dados, chamado sales_snapshot0600, sem afetar o banco de dados de origem.The following example removes a database snapshot, named sales_snapshot0600, without affecting the source database.

DROP DATABASE sales_snapshot0600;

Consulte TambémSee Also