使用通配符在SQL Server中删除数据库

aba*_*arr 4 sql-server-2008

我有一个应用程序为每个新客户创建一个单独的数据库(SQL Server 2008),在测试期间我们最终得到了许多名为PREFIX的数据库.

我希望有一个脚本可以查找以PREFIX开头的所有数据库.放下它们,这样我们就可以开始一个干净的测试循环.任何帮助非常感谢.

Baa*_*aju 15

SELECT ' DROP DATABASE [' + NAME + ']' FROM sys.sysdatabases where name like 'PREFIX%'
Run Code Online (Sandbox Code Playgroud)

复制输出并执行此操作以删除条件中的数据库.您也可以每天安排这一点,只需稍加调整即可.


aba*_*arr 7

更新:

我们最终扩展了 Baaju 的答案,所以我想我会分享它。我们从 MSBuild 调用以下脚本,它会清除测试期间创建的所有现有数据库:

use master

DECLARE @Name nvarchar(1000);

DECLARE testdb_cursor CURSOR FOR
SELECT 'ALTER DATABASE' + '[' + NAME + ']' + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE    DROP DATABASE ' + '[' + NAME + ']' FROM sys.sysdatabases where name like 'TCM.%'

OPEN testdb_cursor;

-- Perform the first fetch and store the value in a variable.
FETCH NEXT FROM testdb_cursor
INTO @Name;

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN

   -- Concatenate and display the current values in the variables.
   exec sp_executesql @Name;

   -- This is executed as long as the previous fetch succeeds.
   FETCH NEXT FROM testdb_cursor
   INTO @Name;
   END

CLOSE testdb_cursor;
DEALLOCATE testdb_cursor;
Run Code Online (Sandbox Code Playgroud)