2010-06-23 38 views
3

我有一個測試,我們最終獲得了大量的數據庫稱爲PREFIX.whatever期間會爲每個新客戶一個單獨的數據庫(SQL Server 2008中),應用程序......DROP DATABASE在SQL Server通配符

我很喜歡一個腳本,它會查找所有以PREFIX開頭的數據庫。並放下它們,以便我們可以開始一個乾淨的測試周期。任何幫助不勝感激。

回答

3

更新:

我們最終擴大了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; 
13
SELECT ' DROP DATABASE [' + NAME + ']' FROM sys.sysdatabases where name like 'PREFIX%' 

複製輸出並執行此操作以刪除條件中的數據庫。您也可以每天安排一次,並稍微調整一下。

+0

偉大的工作就像一個魅力。 – abarr 2010-06-23 12:21:54

+1

+1清潔和簡單 - 偉大的解決方案 – 2010-06-23 12:42:23

+0

由於數據庫名稱可能包含特殊字符;用[]包圍數據庫名稱會更好。 SELECT'DROP DATABASE ['+ NAME +']'FROM sys.sysdatabases where name like'prefix%' – 2017-07-25 09:22:42