2015-06-24 130 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中沒有單個用戶選項。