Solo para aclarar, esto no es realmente una pregunta, más ayuda para personas como yo que estaban buscando una respuesta.
Muchas aplicaciones crean tablas temporales y similares, pero me sorprendió cuando Team Foundation Server creó más de 80 bases de datos en mi prueba SQL Server. TFS no se instaló correctamente, y amablemente me dejó para aclarar después de eso. Dado que cada base de datos tenía una convención de nombres, en lugar de borrar cada base de datos a mano, recordé cómo utilizar los cursores y han escrito lo que ven ser la pieza más prudente de T-SQL nunca:Cómo descartar varias bases de datos en SQL Server
CREATE TABLE #databaseNames (name varchar(100) NOT NULL, db_size varchar(50), owner varchar(50), dbid int, created date, status text, compatibility_level int);
INSERT #databaseNames
exec sp_helpdb;
DECLARE dropCur CURSOR FOR
SELECT name FROM #databaseNames WHERE name like '_database_name_%';
OPEN dropCur;
DECLARE @dbName nvarchar(100);
FETCH NEXT FROM dropCur INTO @dbName;
DECLARE @statement nvarchar(200);
WHILE @@FETCH_STATUS = 0
BEGIN
SET @statement = 'DROP DATABASE ' + @dbName;
EXEC sp_executesql @statement;
FETCH NEXT FROM dropCur INTO @dbName;
END
CLOSE dropCur;
DEALLOCATE dropCur;
DROP TABLE #databaseNames;
Huelga diciendo que el uso de cursores como este es probablemente muy peligroso y debe usarse con extrema precaución. Esto funcionó para mí, y aún no he visto ningún daño adicional en mi base de datos, pero rechazo: use este código bajo su responsabilidad, ¡y haga una copia de seguridad de sus datos vitales primero!
Además, si esto se debe eliminar porque no es una pregunta, lo entiendo. Solo quería publicar esto en algún lugar donde las personas pudieran ver.
se le permite responder a sus propias preguntas, por lo que podría ser mejor para volver a escribir la pregunta en una pregunta real (trate de expresarla tanto en términos de su problema particular como del problema general que encaja), luego publique el guión como una respuesta. –