我需要更改表並且Sql Azure只是旋轉它的輪子。終止SQL Azure中的所有用戶連接
我認爲它是因爲有一個連接訪問該表的某處。
如何查看誰在訪問我的表以及如何終止他們的連接。
我正在尋找類似的東西,以
ALTER DATABASE xxx SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
將與SQL Azure的
我需要更改表並且Sql Azure只是旋轉它的輪子。終止SQL Azure中的所有用戶連接
我認爲它是因爲有一個連接訪問該表的某處。
如何查看誰在訪問我的表以及如何終止他們的連接。
我正在尋找類似的東西,以
ALTER DATABASE xxx SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
將與SQL Azure的
工作,你可以使用sys.dm_exec_connections瞭解到SQL Azure的數據庫連接信息。示例here under Monitoring Connections。您可以阻止SQL Firewall級別的錯誤連接,或拒絕他們使用security stored procedures訪問您關心的表。
任何有效的alter database都應該斷開連接。例如,您可以更改大小 ALTER數據庫演示修改(MAXSIZE = 5 GB)
SQL DB V12支持將數據庫設置爲受限用戶模式(http://www.sqlindepth.com/alter-database-in-sql-v12/)。您也可以使用kill命令終止連接。或者更新防火牆規則以允許您的IP。
刪除除了自己的數據庫上的所有用戶會話(你是說不準的事)
DECLARE @mySessionId INT
DECLARE @dbName VARCHAR(50)
SET @dbName = '<Your database name>'
DECLARE @spid int
CREATE TABLE #UserSessions (spid SMALLINT, ecid SMALLINT, [Status] NCHAR(30), loginname NCHAR(128), hostname NCHAR(128), blk CHAR(5), dbname NCHAR(128), cmd NCHAR(16), request_id INT)
INSERT INTO #UserSessions ([spid], ecid, [Status], [loginname], [hostname], blk, [dbname], cmd, request_id) EXEC dbo.sp_who
SELECT @spid = min(spid) FROM #UserSessions WHERE NOT hostname = HOST_NAME() AND dbName = @dbName AND [status] = 'sleeping'
WHILE @spid IS NOT NULL
BEGIN
EXECUTE ('KILL ' + @spid)
SELECT @spid = min(spid) FROM #UserSessions WHERE NOT hostname = HOST_NAME() AND dbName = @dbName AND spid > @spid AND [status] = 'sleeping'
END
DROP TABLE #UserSessions
通過「只是旋轉的輪子」,你的意思是你沒有任何消息?沒有任何錯誤?有一個SQL Azure在MSDN上不支持的ALTER參數列表(http://msdn.microsoft.com/en-us/library/ee336286.aspx),但這些都應該給你提供錯誤信息。 – tijmenvdk 2010-09-27 07:03:55
你可以請發表實際的ALTER聲明嗎?表架構(「CREATE」腳本)也會有幫助。單用戶模式應該在Azure FYI中工作,您只需連接到主數據庫 – 2010-09-27 15:39:33
這在Azure中不起作用,它會以「SINGLE_USER附近的語法不正確」失敗。 – 2013-10-01 21:37:49