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

Откуда:
Сообщений: 21
Доброго времени суток.

Возникла необходимость дизейблить пользователей на пролинкованных серверах.

Банальное
ALTER LOGIN [***] DISABLE
GO

но выполненное с другого сервера.

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


Возможно ли это и каким образом?
Всякие OPENQUERY, OPENDATAQUERY и прочие не подойдут, понимаю, запроса нет.

SQL server 10.50.1600, 10.50.1250 и 9.0.4053 на данный момент.
Через менеджмент студию.

Заранее спасибо за помощь.
18 янв 15, 12:37    [17133744]     Ответить | Цитировать Сообщить модератору
 Re: Создание/отключение пользователей через linked server  [new]
alexeyvg
Member

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

Выполняйте на другом сервере sp_executesql, через неё выполняйте что угодно.
18 янв 15, 12:58    [17133822]     Ответить | Цитировать Сообщить модератору
 Re: Создание/отключение пользователей через linked server  [new]
kovalevan777
Member

Откуда:
Сообщений: 21
alexeyvg
kovalevan777,

Выполняйте на другом сервере sp_executesql, через неё выполняйте что угодно.


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

Можно маленький пример?
18 янв 15, 13:17    [17133846]     Ответить | Цитировать Сообщить модератору
 Re: Создание/отключение пользователей через linked server  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
kovalevan777
Можно маленький пример?
declare @l sysname;

select @l = N'MyLogin';
exec MyLinkedServer..sys.sp_executesql N'declare @s varchar(max); select @s = ''alter login '' + quotename(@login) + '' disable;''; exec(@s);', N'@login sysname', @login = @l;
18 янв 15, 13:28    [17133874]     Ответить | Цитировать Сообщить модератору
 Re: Создание/отключение пользователей через linked server  [new]
Glory
Member

Откуда:
Сообщений: 104751
exec('some code') at <linked server>
18 янв 15, 13:32    [17133885]     Ответить | Цитировать Сообщить модератору
 Re: Создание/отключение пользователей через linked server  [new]
kovalevan777
Member

Откуда:
Сообщений: 21
invm,

Спасибо, работает.
18 янв 15, 13:36    [17133898]     Ответить | Цитировать Сообщить модератору
 Re: Создание/отключение пользователей через linked server  [new]
kovalevan777
Member

Откуда:
Сообщений: 21
Получилось такого вида процедурка.
Плюс не забыть включить RPC и RPC Out в настройках linked server
CREATE PROCEDURE [dbo].[disable] 
	@name sysname
AS
BEGIN
	SET NOCOUNT ON;
    exec [сервер1].[master].[sys].sp_executesql N'declare @s varchar(max); select @s = ''alter login '' + quotename(@login) + '' disable;''; exec(@s);', N'@login sysname', @login = @name;
    exec [сервер2].[master].[sys].sp_executesql N'declare @s1 varchar(max); select @s1 = ''alter login '' + quotename(@login1) + '' disable;''; exec(@s1);', N'@login1 sysname', @login1 = @name;
    exec [сервер3].[master].[sys].sp_executesql N'declare @s2 varchar(max); select @s2 = ''alter login '' + quotename(@login2) + '' disable;''; exec(@s2);', N'@login2 sysname', @login2 = @name;
    end
GO
18 янв 15, 13:56    [17133935]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить