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,但它有点难看......
答案 0 :(得分:3)
不可能从变量中使用DB名称。
使用动态查询,即使它很难看。
答案 1 :(得分:2)
答案 2 :(得分:0)
首先,您不能像这样参数化DDL语句。其次,GO
是一个批处理终止符,在此之后参数将不可用。
答案 3 :(得分:0)
我不记得MSSqlServer是否允许与Oracle和MySQL具有相同的灵活性,但是在那些可以为每个连接设置默认数据库的情况下。如果查询和语句未指定数据库(use (dbname)
),则使用默认值。也许这对您的目的来说是足够的参数化?