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

Откуда:
Сообщений: 111
Добрый день

Подскажите пожалуйста, возможно ли средствами T-SQL узнать акаунт под которым запущен SQL Server ? И, если это возможно, то как ?
6 сен 10, 12:07    [9388836]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать акаунт SQLServer Service ?  [new]
PokeMan
Member

Откуда: MOSKAU
Сообщений: 312
В голову только такое приходит )
exec xp_cmdshell 'echo %username%'
6 сен 10, 12:24    [9389010]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать акаунт SQLServer Service ?  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
Примерно так:
declare @t table(txt nvarchar(256))
insert into @t  
exec xp_cmdshell 'set'
declare @username varchar(256)
set @username = ''
select
	@username = case 
		when txt like 'USERNAME=%' then @username + substring(txt, 10, 255)
		when txt like 'USERDOMAIN=%' then substring(txt, 12, 255) + '\' + @username
		end
from @t
where txt like 'USERNAME=%' or txt like 'USERDOMAIN=%'
if @username = '' set @username = 'LOCAL\Local system' 
select @username
6 сен 10, 12:41    [9389197]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать акаунт SQLServer Service ?  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
PokeMan
В голову только такое приходит )
exec xp_cmdshell 'echo %username%'
Так низя. Эти функции работают только в bat или cmd.
6 сен 10, 12:42    [9389202]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать акаунт SQLServer Service ?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
DeColo®es, еще как можно :)
6 сен 10, 12:52    [9389295]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать акаунт SQLServer Service ?  [new]
Богдан Гоцкий
Member

Откуда: Львов
Сообщений: 504
Maxx,

Через WMI. Имхо наиболее правильное решение.

sp_configure 'show advanced options', 1 reconfigure
go
sp_configure 'Ole Automation Procedures', 1 reconfigure
go


declare @script_text varchar(8000), @object int, @hr int
declare @t table(ServiceName nvarchar(255), DisplayName nvarchar(255), StartName nvarchar(255), State int)

set @script_text = '
function Main() 
	dim iter
	iter = 0
	redim services(3, -1)
	
	Set colItems = GetObject("winmgmts:\\.\root\Microsoft\SqlServer\ComputerManagement").ExecQuery("select * from SqlService where SQLServiceType = 1",,48)
	For Each objItem in colItems
		redim preserve services(ubound(services, 1), ubound(services, 2) + 1)

		services(0, iter) = objItem.ServiceName
		services(1, iter) = objItem.DisplayName
		services(2, iter) = objItem.StartName
		services(3, iter) = objItem.State
		
		iter = iter + 1
	Next

	Main = services
end function'

exec @hr = sp_OACreate 'MSScriptControl.ScriptControl', @object out
exec @hr = sp_OASetProperty @object, 'Language',  'VBScript' 
exec @hr = sp_OAMethod @object, 'AddCode', NULL, @script_text
insert @t exec @hr = sp_OAMethod @object, 'Run', null, 'Main'
exec @hr = sp_OADestroy @object

select * from @t
6 сен 10, 13:20    [9389545]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать акаунт SQLServer Service ?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
a2d
Добрый день

Подскажите пожалуйста, возможно ли средствами T-SQL узнать акаунт под которым запущен SQL Server ? И, если это возможно, то как ?


а зачем так? расскажите, может будет полезно
6 сен 10, 13:24    [9389588]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать акаунт SQLServer Service ?  [new]
a2d
Member

Откуда:
Сообщений: 111
Спасибо ! Очень познавательно :)

Winnipuh

а зачем так? расскажите, может будет полезно


Хотелось бы создать триггер входа срабатывающий при установлении соединения пользователем которому напрямую (без участия в доменных группах) предоставлены права на базу.
Запрос вида
select name from sys.server_principals where type = N'u'
возвращает и учетную запись под которой запущена служба SQL Server, хотелось бы её исключить.
Версия SQL Server:
Microsoft SQL Server 2005 - 9.00.4035.00
6 сен 10, 13:49    [9389807]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать акаунт SQLServer Service ?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Богдан Гоцкий,

а мі помоему о правильности не спорим ,просто перечсиляем и все возможные методы ,кстате как с правами у вашего примера ? Какой аккаунт нужен чтобпутило выполнить такой запрос ?
6 сен 10, 14:47    [9390483]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать акаунт SQLServer Service ?  [new]
Богдан Гоцкий
Member

Откуда: Львов
Сообщений: 504
a2d

Запрос вида
select name from sys.server_principals where type = N'u'
возвращает и учетную запись под которой запущена служба SQL Server...

Да? А почему тогда мой сервер запущен под моей доменной учеткой (LV\bhotskyy) а запрос выдает NT AUTHORITY\SYSTEM ?

Maxx
Богдан Гоцкий,

а мі помоему о правильности не спорим ,просто перечсиляем и все возможные методы ,кстате как с правами у вашего примера ? Какой аккаунт нужен чтобпутило выполнить такой запрос ?

BOL->sp_OACreate
Requires membership in the sysadmin fixed server role.
6 сен 10, 18:35    [9393015]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как узнать акаунт SQLServer Service ?  [new]
NEKOS
Member

Откуда:
Сообщений: 194
можеш кому понадобится вот такое решение

SET @KEY_VALUE = SYSTEM\CurrentControlSet\Services\' + @ServiceInsName
EXECUTE master..xp_regread 'HKEY_LOCAL_MACHINE', @KEY_VALUE, 'ObjectName', @ServiceAccountName OUTPUT
20 июл 12, 14:27    [12893467]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить