Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запуск процедуры от имени администратора  [new]
Биака
Guest
Нород, подскажите такую штуку.
Хочу создать процедурку, к-рая будет выполнять запрос
Select spid FROM master.sys.sysprocesses with (nolock) 
where loginame=%login% and hostname=%host%  and spid<>@@spid
order by hostname

Т.е. получать список сессий от пользователя с его машины, но не текущей.
Ну и дальше там чего-нибудь с ними делать, например прибивать kill ом.
С дежурным пользователем много каши не сваришь, даже список его же сессий не получается получить
вот надо чтоб процедура вызывалась из-под админа.
Как так сделать можно?
Или как?
31 окт 12, 14:31    [13402556]     Ответить | Цитировать Сообщить модератору
 Re: Запуск процедуры от имени администратора  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Биака,

EXECUTE AS Админ
31 окт 12, 14:36    [13402590]     Ответить | Цитировать Сообщить модератору
 Re: Запуск процедуры от имени администратора  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
WarAnt, неправильно.

Для доступа к всем процессам в sys.sysprocesses нужно право VIEW SERVER STATE, а EXECUTE AS в пользовательской процедуре можно указать только от имени пользователя базы, но не от логина SQL Server'а.

Вот в этой теме буквально недавно разбирали проблему: https://www.sql.ru/forum/actualthread.aspx?tid=979603
31 окт 12, 14:55    [13402740]     Ответить | Цитировать Сообщить модератору
 Re: Запуск процедуры от имени администратора  [new]
Биака
Guest
Чет не получаеццо

CREATE LOGIN KillProc WITH PASSWORD = 'KillProc', CHECK_POLICY = OFF
GRANT VIEW SERVER STATE TO KillProc

USE [bmTN2]
GO
/****** Object:  StoredProcedure [dbo].[KillSes]    Script Date: 10/31/2012 15:05:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[KillSes]

	-- Add the parameters for the stored procedure here
	@Login varchar(100),
	@Host varchar(100),
	@CurSess int
WITH EXECUTE AS 'KillProc'
AS
BEGIN

Select spid, loginame, hostname FROM master.sys.sysprocesses with (nolock) 
order by hostname	

END


Одну запись выдает всего - свою сессию, и все, WITH EXECUTE AS 'Покруче дядька' тоже пробывал...
31 окт 12, 15:22    [13403011]     Ответить | Цитировать Сообщить модератору
 Re: Запуск процедуры от имени администратора  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Биака, и что, оно даже выполняется?

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

Вы вообще внимательно тему по ссылке читали?
31 окт 12, 15:55    [13403227]     Ответить | Цитировать Сообщить модератору
 Re: Запуск процедуры от имени администратора  [new]
Биака
Guest
WITH EXECUTE AS 'DOMAIN\Adm'


Вот так делал, один черт.. Вываливается только текущая сессия и все тут.
Не въезжаю.. DOMAIN\Adm - Имеет права sysadmin на sql

Как оно по правде быть должно?
31 окт 12, 17:04    [13403826]     Ответить | Цитировать Сообщить модератору
 Re: Запуск процедуры от имени администратора  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Биака
WITH EXECUTE AS 'DOMAIN\Adm'


Вот так делал, один черт.. Вываливается только текущая сессия и все тут.
Не въезжаю.. DOMAIN\Adm - Имеет права sysadmin на sql

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

http://msdn.microsoft.com/ru-ru/library/ms188354.aspx
31 окт 12, 17:11    [13403864]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить