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

Откуда:
Сообщений: 2631
На сервере есть локальная группа.
Как в ХП получить список юзверов, принадлежащих этой группе.

Пока сам додумался до xp_cmdshell + netLocalgroup.
Но это немножко не то, так как этот скрипт нужно запускать на сервере.

толкните в нужную сторону.
1 окт 09, 16:47    [7730901]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить членство в локальной группе.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
https://www.sql.ru/forum/actualthread.aspx?tid=63677&hl=ldap
1 окт 09, 16:53    [7730946]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить членство в локальной группе.  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
pkarklin
Пару вопросов
1) Ваша ссылка показывает как работать с LDAP.
2) LDAP - язык для работы с Active Directory
3) Active Directory ничего не знает про локальные группы на компьюетере My_comp.

Так что не совсем понятно, как применить вашу ссылку.
1 окт 09, 17:07    [7731060]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить членство в локальной группе.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Мдя... Проглядел я тип группы. Прошу прощения.
1 окт 09, 17:19    [7731122]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить членство в локальной группе.  [new]
aleks2
Guest
Если вам
>>Как проверить членство в локальной группе, то
IS_MEMBER
Indicates whether the current user is a member of the specified Microsoft® Windows NT® group or Microsoft SQL Server™ role.

Syntax
IS_MEMBER ( { 'group' | 'role' } )

Arguments
'group'

Is the name of the Windows NT group being checked; must be in the format Domain\Group. group is sysname.

'role'

Is the name of the SQL Server role being checked. role is sysname and can include the database fixed roles or user-defined roles but not server roles.

Если же
>>в ХП получить список юзверов, принадлежащих этой группе
то полный фигвам. Рази только напишете
Extended Stored Procedures
Extended stored procedures allow you to create your own external routines in a programming language such as C. The extended stored procedures appear to users as normal stored procedures and are executed in the same way. Parameters can be passed to extended stored procedures, and they can return results and return status.
1 окт 09, 19:31    [7731737]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить членство в локальной группе.  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
sp_OACreate+что то из WMI?
-------------------------
There’s no silver bullet!
1 окт 09, 19:55    [7731792]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить членство в локальной группе.  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
--__Александр__--,
как то так, если без xp_cmdshell:
DECLARE @t TABLE (r varchar(100))
DECLARE @object int , @script varchar(8000),@u varchar(100)
SET @u = 'Администратор'
SET @script ='
function Main()
	Set o = GetObject("WinNT://'+@@SERVERNAME+'/'+@u+',user")
	for each k in o.groups
		s = s & ";" & k.Name
	next
	Main = s
end function
'
EXEC sp_OACreate 'MSScriptControl.ScriptControl', @object OUTPUT
EXEC sp_OASetProperty @object, 'Language',  'VBScript' 
EXEC sp_OAMethod @object, 'AddCode', NULL, @script
INSERT @t EXEC sp_OAMethod @object, 'Run', NULL, 'Main'
EXEC sp_OADestroy @object

SELECT * FROM @t
2 окт 09, 11:28    [7733649]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить членство в локальной группе.  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
К сожалению, ваш код не работает. Ничего не возвращает.
Но идею понял, буду разбираться, спасибо.
2 окт 09, 14:15    [7735234]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить членство в локальной группе.  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Вот так заработало:
DECLARE @t TABLE (r varchar(100))
DECLARE @object int , @script varchar(8000),@u varchar(100)
SET @script =
'
function Main()
Set objGroup = GetObject("WinNT://'+@@SERVERNAME+'/Administrators,group")
for each mem IN objGroup.Members
s = s & ";" & mem.Name
next
Main = s
end function
'
EXEC sp_OACreate 'MSScriptControl.ScriptControl', @object OUTPUT

EXEC sp_OASetProperty @object, 'Language', 'VBScript'
EXEC sp_OAMethod @object, 'AddCode', NULL, @script
INSERT @t EXEC sp_OAMethod @object, 'Run', NULL, 'Main'
EXEC sp_OADestroy @object

SELECT * FROM @t
2 окт 09, 14:54    [7735540]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить членство в локальной группе.  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
--__Александр__--,
Не внимательно прочитал Ваш вопрос, если надо по группе список пользователей то:
DECLARE @t TABLE (r varchar(8000))
DECLARE @object int , @script varchar(8000),@u varchar(100)
SET @u = 'Пользователи' --имя группы
--SET @u = 'Users'
SET @script ='
function Main()
	Set o = GetObject("WinNT://'+@@SERVERNAME+'/'+@u+',group")
	for each k in o.Members
		s = s & ";" & k.Name
	next
	Main = s
end function
'
EXEC sp_OACreate 'MSScriptControl.ScriptControl', @object OUTPUT
EXEC sp_OASetProperty @object, 'Language',  'VBScript' 
EXEC sp_OAMethod @object, 'AddCode', NULL, @script
INSERT @t EXEC sp_OAMethod @object, 'Run', NULL, 'Main'
EXEC sp_OADestroy @object

SELECT * FROM @t
в предыдущем примере было наоборот-)
2 окт 09, 14:57    [7735555]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить членство в локальной группе.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Для выполнения этого скрипта будут нужны права sysadmin
2 окт 09, 14:57    [7735556]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить