【发布时间】:2015-09-28 20:32:30
【问题描述】:
我正在测试所有以特定前缀开头的数据库的删除数据库查询。但是,因为这很容易导致可怕的事情,所以我正在使用我的 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 数据库的简单 SQL 查询?所以我知道这个查询只会在切换回Drop Database之前影响我想要的数据库?
编辑:更好的是,一个将返回数据库名称的查询。
与select name from sys.databases 类似,但它与['+ @dbname + '] 一起使用,仅返回带有该前缀的数据库的名称,以确保此查询影响适当的数据库。
【问题讨论】:
-
使用数据库将适用。但我不确定它会有什么帮助
-
@lazy 查看我所做的编辑
-
你为什么觉得这里需要使用光标?
-
只是
PRINT而不是Exec。并且使用QUOTENAME不是自制的方括号加法。
标签: sql sql-server database drop-database