Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Отключение пользователей от определенной БД с помощью скрипта  [new]
NightSkif
Member

Откуда:
Сообщений: 98
Доброе время суток все. Подскажите, как отлючить пользователей от определенной БД с помощью скрипта? Т.е. сервера (разбросаны) по области. Есть БД на этих серверах. Необходимо отключить всех вользователей, которые относятся к это БД. Просьба перевод БД в single режим не предлогать.
16 июл 09, 05:41    [7421637]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
KILL соответствующий процесс.
16 июл 09, 06:21    [7421648]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Просьба перевод БД в single режим не предлогать.


А в RESTRICTED_USER предлагать? Или они все у Вас под dbo ходят?
16 июл 09, 09:27    [7421854]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
NightSkif
Member

Откуда:
Сообщений: 98
pkarklin
автор
Просьба перевод БД в single режим не предлогать.


А в RESTRICTED_USER предлагать? Или они все у Вас под dbo ходят?

Забыл уточнить - авторизация SQL. И что значить под dbo?
16 июл 09, 12:32    [7423197]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
NightSkif
Member

Откуда:
Сообщений: 98
NightSkif
pkarklin
автор
Просьба перевод БД в single режим не предлогать.


А в RESTRICTED_USER предлагать? Или они все у Вас под dbo ходят?

Забыл уточнить - авторизация SQL. И что значить под dbo?

И что такое RESTRICTED_USER?
16 июл 09, 12:34    [7423214]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
NightSkif
Забыл уточнить - авторизация SQL.


Без разницы.

NightSkif
И что значить под dbo?


С правами владельца бд?

NightSkif
И что такое RESTRICTED_USER?


Это опция бд, устанавливаемая с помощью ALTER DATABASE.
16 июл 09, 12:50    [7423352]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31175
NightSkif
Необходимо отключить всех вользователей, которые относятся к это БД.
Уточните постановку задачи.

"Необходимо отключить всех вользователей" - разорвать коннект, отобрать возможность подключиться к этой базе, отобрать возможность подключиться к серверу

"которые относятся к это БД" - в каком смысле? у которых есть коннект, у которых есть права на коннект, которые в каком-то списке

NightSkif
Просьба перевод БД в single режим не предлогать.
Чем этот вариант противорчит постановке задачи? (просто чтоб задачу понять)
16 июл 09, 12:50    [7423359]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
NightSkif
Member

Откуда:
Сообщений: 98
alexeyvg,
На сколько я понял, Single режим переодит базу в однопользовательский режим. Т.е. кто успел, тот и в дамках. Мне необходимо ночью, т.к. пользователи могут работать и после рабочего времени, отключить учетные записи. Чтобы на утро я мог спокойно с базами работать.
16 июл 09, 12:58    [7423414]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
NightSkif
Мне необходимо ночью ... Чтобы на утро я мог спокойно с базами работать.


Так утром или ночью? И "работать с базами" - это что?
16 июл 09, 13:00    [7423440]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
NightSkif
Member

Откуда:
Сообщений: 98
pkarklin,
Нет, пользователи не являются владельцем БД
16 июл 09, 13:01    [7423451]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
NightSkif
Member

Откуда:
Сообщений: 98
pkarklin,
Скрипт прогнать ночью, чтобы на утро я мог рабоать. Между БД настроенна репликация. Есть обновление от разработчика, которое надо прогнать. Но перед этим нужно синхронизировать все БД, естественно, чтобы ни в этот момент, ни после - пользователи не могли вносить изменения.
Как вариант, накидал такой скрипт (заодно скажите - можно так или нет)
use master
DECLARE @str VARCHAR (100)
DECLARE @s VARCHAR(50)

declare c cursor for SELECT s.[NAME]  FROM Omnis.sys.sysusers s
                     WHERE s.[name] LIKE '%ИМЯ_БД%'

--Отключение пользователей от БД
OPEN c
FETCH next FROM c INTO @s
	WHILE @@fetch_status=0
	BEGIN
		SET @str='grant CONNECT SQL TO [' + @s  + ']'	--Разрешить коннект
	--	SET @str='Deny CONNECT SQL TO [' + @s  + ']'	--Запретить коннект
		PRINT @str
		EXEC (@str)
		SET @str='ALTER LOGIN [' + @s + '] enable'		--Включить учетную запись
	--	SET @str='ALTER LOGIN [' + @s + '] DISABLE'		--Отключить учетную запись
		PRINT @str
		EXEC (@str)
		FETCH next FROM c INTO @s
	END
CLOSE c
DEALLOCATE c
16 июл 09, 13:06    [7423498]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Как вариант, накидал такой скрипт


Который никого не отключит. Читайте BOL: ALTER DATABASE ... SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
16 июл 09, 13:11    [7423547]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
NightSkif
Member

Откуда:
Сообщений: 98
pkarklin
автор
Как вариант, накидал такой скрипт


Который никого не отключит. Читайте BOL: ALTER DATABASE ... SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE

Потому что заремарено
SET @str='Deny CONNECT SQL TO [' + @s + ']'
и
SET @str='ALTER LOGIN [' + @s + '] DISABLE' ?
16 июл 09, 13:15    [7423587]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36803
NightSkif,

Это такой прикол, да, включать забаненых пользователей по коннекту, который они никогда не смогут осуществить?
16 июл 09, 13:20    [7423632]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
NightSkif
Потому что заремарено


Потому что ни одна из этих инструкций не отключит уже подключенных пользователей.
16 июл 09, 13:22    [7423653]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
NightSkif
Member

Откуда:
Сообщений: 98
pkarklin
NightSkif
Потому что заремарено


Потому что ни одна из этих инструкций не отключит уже подключенных пользователей.

Но и запретит доступ к БД другим пользователям, так?
16 июл 09, 13:25    [7423674]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
Supra93
Member

Откуда:
Сообщений: 8174
NightSkif
alexeyvg,
На сколько я понял, Single режим переодит базу в однопользовательский режим. Т.е. кто успел, тот и в дамках. Мне необходимо ночью, т.к. пользователи могут работать и после рабочего времени, отключить учетные записи. Чтобы на утро я мог спокойно с базами работать.

ну прочтите же ALTER DATABASE (Transact-SQL)
<db_user_access_option> ::=

Controls user access to the database.
16 июл 09, 13:25    [7423680]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
NightSkif
Но и запретит доступ к БД другим пользователям, так?


Вот ведь, а... Вам уже разжевали и в рот положили, а Вы все роете и роете, вместо того, чтобы открыть документацию на предмет озвученной мной инструкции.
16 июл 09, 13:27    [7423689]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
NightSkif
Member

Откуда:
Сообщений: 98
pkarklin
NightSkif
Но и запретит доступ к БД другим пользователям, так?


Вот ведь, а... Вам уже разжевали и в рот положили, а Вы все роете и роете, вместо того, чтобы открыть документацию на предмет озвученной мной инструкции.

На сколько я понял из документации, надо выполнить
ALTER DATABASE ИМЯ_БД SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
16 июл 09, 13:32    [7423721]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
NightSkif
На сколько я понял...


Поздравляю!!! Вы поняли, к чему приведет выполнение этой инструкции?
16 июл 09, 13:34    [7423736]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
NightSkif
Member

Откуда:
Сообщений: 98
pkarklin,
Дя....(жаль нет значка стыдно)
Доступ могут иметь только dbcreator и sysadmin
16 июл 09, 13:36    [7423759]     Ответить | Цитировать Сообщить модератору
 Re: Отключение пользователей от определенной БД с помощью скрипта  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
NightSkif
Доступ могут иметь только dbcreator и sysadmin


+ опция WITH ROLLBACK IMMEDIATE откатит все активные транзакции простых сметрных, а не убедт ждать их завершения.
16 июл 09, 13:38    [7423769]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить