我正在測試對於以特定前綴開頭的所有數據庫的drop database查詢。然而,因爲這很容易導致可怕的事情,我把我的降數據庫查詢將應用於每個SQL Server數據庫的查詢
declare @dbname nvarchar (200);
declare @query nvarchar (max);
DECLARE db_cursor CURSOR FOR
select name from sys.databases
where name like 'PREFIX%'
Open db_cursor
fetch next from db_cursor into @dbname
while @@FETCH_STATUS = 0
BEGIN
set @query = 'Drop Database ['+ @dbname + ']'
Exec(@query)
FETCH NEXT FROM db_cursor INTO @dbname
END
Close db_cursor
deallocate db_cursor
,並想改變Drop Database
部分的東西是那麼可怕。
所以主要問題是否有一個簡單的SQL查詢,我可以放在那裏,總是適用於任何SQL Server數據庫?所以我知道這個查詢只會影響我想要的數據庫,然後再將它切換回Drop Database
?
編輯:更好的是,一個查詢將返回數據庫的名稱。 與select name from sys.databases
類似,但與['+ @dbname + ']
一起使用的僅返回具有該前綴的數據庫的名稱,以確保此查詢影響相應的數據庫。
使用的數據庫都將適用。但我不知道它會如何幫助 – lazy
@lazy請參閱編輯我製作 – David
爲什麼你覺得在這裏需要使用光標? – Becuzz