Вы можете написать динамический SQL, чтобы сделать это:
use master
go
declare @dbnames nvarchar(max)
declare @statement nvarchar(max)
declare @closeconnection nvarchar(max)
set @dbnames = ''
set @statement = ''
select @dbnames = @dbnames + ',[' + name + ']' from sys.databases where name like 'zzz%'
if len(@dbnames) = 0
begin
print 'no databases to drop'
end
else
BEGIN
SET @closeconnection = 'alter database ' + substring(@dbnames, 2, len(@dbnames))
+ ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE'
set @statement = 'drop database ' + substring(@dbnames, 2, len(@dbnames))
print @statement
EXEC sp_executesql @closeconnection;
exec sp_executesql @statement;
end
Обычно, синтаксис, чтобы закрыть все активные подключения к базе данных:
--set it to single user to disable any other connections
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
--do your stuff here
--set it back to multiple users
ALTER DATABASE YourDatabase SET MULTI_USER
В качестве альтернативы, вы можете также генерировать динамический выберите этот список, который заполняет выписку из базы данных выписок следующим образом:
USE master;
Go
SELECT 'DROP DATABASE '+ name,
'alter database ' + name + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE'
FROM sys.databases WHERE name like 'zzz%';
GO
Предоставлено: @SeriousM and OFH
Посмотрите, пожалуйста, базы данных для списка баз данных. Затем бросьте их. –
Один из вариантов, если вы предпочитаете ничего не писать, будет в SSMS, нажмите view -> Object Explorer Details, и отсюда вы можете выделить/выбрать несколько и удалить – Dan