我正在测试以特定前缀开头的所有数据库的删除数据库查询。但是,因为这很容易导致可怕的事情,所以我正在使用 drop 数据库查询
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 + ']
只返回具有该前缀的数据库的名称以确保此查询影响适当的数据库的方法。