USE master
GO
DECLARE @DbName nvarchar(MAX)
SET @DbName = N'DataBase'
ALTER DATABASE @DbName
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE @DbName SET OFFLINE WITH NO_WAIT
GO
ALTER DATABASE @DbName SET ONLINE
GO
ALTER DATABASE @DbName
SET MULTI_USER
GO
Я знаю, что я могу использовать EXEC, но это немного уродливые ....Как передать имя базы данных в качестве параметра в SQL Server
Вы не можете параметризовать ссылки на объекты в большинстве DML/DDL. Вам действительно нужен EXEC/sp_executesql, а также для создания некоторых динамических запросов. – MatBailie
Я предполагаю, что вы видели этот вопрос http://stackoverflow.com/questions/9093478/how-to-pass-a-database-name-as-a-parameter-in-sql-server, который предлагает EXEC. Это может быть единственный способ. – Ray
@ Поделитесь ссылкой с моим собственным вопросом :-P –