убить все пользовательские соединения в SQL Azure - PullRequest
5 голосов
/ 27 сентября 2010

Мне нужно переделать стол, а Sql Azure просто вращает колеса.

Я думаю, потому что где-то есть соединение, которое обращается к этой таблице.

Как я могу увидеть, кто имеет доступ к моим таблицам и как я могу разорвать их соединения.

Я ищу что-то похожее на

ALTER DATABASE xxx SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

, который будет работать с SQL Azure

Ответы [ 4 ]

2 голосов
/ 27 февраля 2012

Любая действительная база данных alter должна прервать соединение.Например, вы можете изменить размер демонстрационной базы данных ALTER MODIFY (MAXSIZE = 5 ГБ)

2 голосов
/ 03 октября 2010

Вы можете использовать sys.dm_exec_connections для просмотра информации о соединениях с базой данных SQL Azure.Пример здесь в разделе Мониторинг соединений .Вы можете заблокировать ошибочные соединения на уровне SQL Firewall или запретить им доступ к таблице, которая вас интересует, с помощью хранимых процедур безопасности .

1 голос
/ 07 июня 2016

SQL DB V12 поддерживает настройку базы данных в режим ограниченного доступа пользователя (http://www.sqlindepth.com/alter-database-in-sql-v12/).). Вы также можете уничтожить соединения с помощью команды kill. Либо обновите правила брандмауэра, чтобы разрешить ваш IP.

0 голосов
/ 11 сентября 2017

Удаляет все пользовательские сеансы в базе данных, кроме вашей собственной (что вам запрещено делать)

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...