我有一個測試,我們最終獲得了大量的數據庫稱爲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