终止SQL Azure中的所有用户连接

终止SQL Azure中的所有用户连接,sql,azure,Sql,Azure,我需要修改一个表,SQLAzure只是在转动它的轮子 我认为这是因为在某个地方有一个连接正在访问该表 如何查看谁正在访问我的表,以及如何终止它们的连接 我在找类似的东西 ALTER DATABASE xxx SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO 这将适用于sql azure,您可以使用它查看有关与sql azure DB连接的信息。实例您可以在级别上阻止错误的连接,或者拒绝它们访问您关心的表。任何有效的alter数据库都应该删除连接。例如,您可以

我需要修改一个表,SQLAzure只是在转动它的轮子

我认为这是因为在某个地方有一个连接正在访问该表

如何查看谁正在访问我的表,以及如何终止它们的连接

我在找类似的东西

ALTER DATABASE xxx SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

这将适用于sql azure

,您可以使用它查看有关与sql azure DB连接的信息。实例您可以在级别上阻止错误的连接,或者拒绝它们访问您关心的表。

任何有效的alter数据库都应该删除连接。例如,您可以更改大小
ALTER database demo MODIFY MAXSIZE=5 GB

SQL DB 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参数列表,但是这些参数都会给您错误消息。您可以发布实际的ALTER语句吗?表模式创建脚本也会有所帮助。单用户模式应该在Azure中工作,仅供参考,您只需连接到主数据库。这与Azure中的情况不同,它在“单用户”附近出现错误语法时失败。对于这样的问题,下一步不是“杀死所有用户”,而是“调查问题并可能学到一些东西”。在这些情况下,我始终建议安装sp_WhoIsActive