DROP DATABASE (Transact-SQL)
Quita una o varias bases de datos o instantáneas de la base de datos de una instancia de SQL Server.
Sintaxis
DROP DATABASE { database_name | database_snapshot_name } [ ,...n ]
[;]
Argumentos
database_name
Especifica el nombre de la base de datos que se va a quitar. Para mostrar una lista de bases de datos, utilice la vista de catálogo sys.databases.database_snapshot_name
Especifica el nombre de la instantánea de base de datos que se va a quitar.
Comentarios
Para utilizar DROP DATABASE, el contexto de base de datos de la conexión no puede ser el mismo que el de la base de datos o instantánea de la base de datos que se va a quitar.
La instrucción DROP DATABASE debe ejecutarse en modo de confirmación automática y no se permite en una transacción explícita o implícita. El modo de confirmación automática es el modo de administración de transacciones predeterminado. Para obtener más información, vea Transacciones de confirmación automática.
Quitar una base de datos
Las bases de datos del sistema no se pueden quitar.
Al quitar una base de datos, se elimina la base de datos de una instancia de SQL Server, así como los archivos de disco físico que utiliza. Si la base de datos o alguno de sus archivos están sin conexión cuando se quita, no se eliminan los archivos de disco. Estos archivos se pueden eliminar manualmente en el Explorador de Windows. Para quitar una base de datos del servidor actual sin eliminar los archivos del sistema de archivos, use sp_detach_db.
No se puede quitar una base de datos que se está utilizando actualmente. Es decir, que un usuario la tenga abierta para lectura o escritura. Para quitar usuarios de la base de datos, utilice ALTER DATABASE para establecer la base de datos en SINGLE_USER.
Deben quitarse las instantáneas de una base de datos para poder quitar esa base de datos.
Si la base de datos participa en el trasvase de registros, quite el trasvase de registros antes de quitar la base de datos. Para obtener más información, vea Administración de trasvase de registros.
Una base de datos se puede quitar sea cual sea su estado (sin conexión, sólo lectura, sospechosa, etc.). Para ver el estado actual de una base de datos, utilice la vista de catálogo sys.databases.
Una base de datos que se ha quitado sólo puede volver a crearse si se restaura una copia de seguridad. No es posible realizar copias de seguridad de instantáneas de la base de datos, por lo que éstas no se pueden restaurar.
Cuando se quita una base de datos, debe realizarse una copia de seguridad de la base de datos maestra.
Quitar una instantánea de la base de datos
Cuando se quita una instantánea de la base de datos, se elimina la instantánea de la base de datos de una instancia de SQL Server, así como los archivos físicos dispersos del sistema de archivos NTFS que utiliza. Para obtener información sobre cómo las instantáneas de la base de datos utilizan archivos dispersos, vea Funcionamiento de las instantáneas de la base de datos.
Al quitar una instantánea de la base de datos se borra la caché del plan para la instancia de SQL Server. Al borrar la caché del plan se provoca una recompilación de todos los planes de ejecución posteriores, lo que puede ocasionar una disminución repentina y temporal del rendimiento de las consultas. Para cada almacén de caché borrado de la caché del plan, el registro de errores de SQL Server contiene el siguiente mensaje informativo: "SQL Server ha detectado %d instancias de vaciado del almacén de caché '%s' (parte de la caché del plan) debido a determinadas operaciones de mantenimiento de base de datos o reconfiguración". Este mensaje se registra cada cinco minutos siempre que se vacía la caché dentro de ese intervalo de tiempo.
Quitar una base de datos utilizada en la replicación
Para quitar una base de datos publicada para la replicación transaccional, o suscrita o publicada para la replicación de mezcla, primero es necesario quitar la replicación de la base de datos. Para obtener más información sobre cómo quitar la replicación de una base de datos, vea Quitar la replicación. Si se daña una base de datos o no se puede quitar la replicación primero, o ambas cosas, la mayoría de las veces todavía se puede quitar la base de datos utilizando ALTER DATABASE para definirla como sin conexión y, después, quitarla.
Permisos
Necesita el permiso CONTROL en la base de datos, el permiso ALTER ANY DATABASE o la pertenencia al rol fijo de base de datos db_owner.
Ejemplos
A. Quitar una sola base de datos
En el ejemplo siguiente se quita la base de datos Sales.
DROP DATABASE Sales;
B. Quitar varias bases de datos
En el ejemplo siguiente se quita cada una de las bases de datos enumeradas.
DROP DATABASE Sales, NewSales;
C. Quitar una instantánea de la base de datos
En el ejemplo siguiente se quita una instantánea de la base de datos, denominada sales_snapshot0600, sin que la base de datos de origen se vea afectada.
DROP DATABASE sales_snapshot0600;