我有一个测试,我们最终获得了大量的数据库称为PREFIX.whatever期间会为每个新客户一个单独的数据库(SQL Server 2008中),应用程序......DROP DATABASE在SQL Server通配符
我很喜欢一个脚本,它会查找所有以PREFIX开头的数据库。并放下它们,以便我们可以开始一个干净的测试周期。任何帮助不胜感激。
我有一个测试,我们最终获得了大量的数据库称为PREFIX.whatever期间会为每个新客户一个单独的数据库(SQL Server 2008中),应用程序......DROP DATABASE在SQL Server通配符
我很喜欢一个脚本,它会查找所有以PREFIX开头的数据库。并放下它们,以便我们可以开始一个干净的测试周期。任何帮助不胜感激。
更新:
我们最终扩大了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;
SELECT ' DROP DATABASE [' + NAME + ']' FROM sys.sysdatabases where name like 'PREFIX%'
复制输出并执行此操作以删除条件中的数据库。您也可以每天安排一次,并稍微调整一下。
伟大的工作就像一个魅力。 – abarr 2010-06-23 12:21:54
+1清洁和简单 - 伟大的解决方案 – 2010-06-23 12:42:23
由于数据库名称可能包含特殊字符;用[]包围数据库名称会更好。 SELECT'DROP DATABASE ['+ NAME +']'FROM sys.sysdatabases where name like'prefix%' – 2017-07-25 09:22:42