2015-06-24 177 views
1

我想在我的Windows Azure数据库执行以下查询 利用总体“ALTER DATABASE语句必须是批处理中的唯一语句”

ALTER DATABASE Test SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
ALTER DATABASE Test SET MULTI_USER 

当尝试运行它,我得到的错误

ALTER DATABASE语句必须是批处理中唯一的语句。

关于如何解决这个问题的任何建议。我基本上想要的是关闭我的数据库上的所有当前连接。

+0

请注意,SINGLE_USER目前在SQL Azure V12上不可用。 – cbattlegear

回答

3

由于错误意味着,您的ALTER语句可以是唯一的批处理 - 这样的事情应该工作:

GO 
ALTER DATABASE Test SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 
ALTER DATABASE Test SET MULTI_USER 
GO 

GO标志着一个批次结束所以每个改变声明将是一个单独的批处理。

+0

现在我明白了。 'SINGLE_USER'附近的语法不正确。 'MULTI_USER'附近的语法不正确。 –

+0

正如cbattlegear指出的那样,用户模式的变化目前在Azure上不可用,下面是另一个似乎相关的SO问题:http://stackoverflow.com/questions/3801029/kill-all-user-connections-in-sql-天青 – Kritner

+0

对不起,我没有说在我的回答中,我不是特别熟悉sql azure,只是得到了以前的错误信息,并有一个解决方案:P – Kritner

0

如果您只想关闭连接,可以尝试将其设置为restricted_user。 V12中不支持ALTER DATABASE单用户。如果你想关闭所有的连接,并且如果他们重新连接就可以了,你可以通过结合使用Kill语句和sys.dm_Exec_Requests /来终止它们。另一个选项是设置ReadOnly,然后是Read_write。 SQL DB中没有单个用户选项。