2013-03-15 3 views
2

Мне нужна хранимая процедура, которую я могу предоставить группе пользователей, которая позволит им увидеть все запущенные процессы (например, sp_who), но я не хочу, чтобы эти пользователи имели разрешения VIEW SERVER STATE так как это вызовет слишком много метаданных.Пользователь sp_who без предоставления состояния сервера просмотра

Мне также нужно разрешить пользователям убивать процессы.

Это для сервера dev, посвященного этой группе, и моя цель - разрешить эту функциональность, не подвергая более подробной информации, чем необходимо.

У кого-нибудь есть идеи?

До сих пор я пытался создать хранимую процедуру, которая вызывает sp_who как я (DBA), но результаты показывают только текущий процесс звонящих.

TYIA !!!

+0

Ну, [прочитайте документацию MSDN на 'sp_who'] (http://msdn.microsoft.com/en-us/library /ms174313.aspx): * Разрешения. Требуется разрешение VIEW SERVER STATE на сервере для просмотра всех исполняемых сеансов на экземпляре SQL Server. ** В противном случае пользователь видит только текущий сеанс. *** Поэтому, если у ваших пользователей нет этого разрешения, они никогда не будут видеть другие сеансы - период. –

+0

Почему вы доверяете кому-то, чтобы просмотреть все запущенные процессы и процессы уничтожения, но вы не доверяете им 'sp_who'? – Pondlife

+0

В группе есть бывший администратор БРС с нулевой ответственностью. Группа делает большие ETL в том, что считается средой хранилища данных, поэтому при разработке они не могли просматривать и убивать свои процессы на dev-сервере. Если я расскажу больше о сервере, чем необходимо, этот человек, без сомнения, будет использовать его в ущерб. Представьте, что у вас есть бывший администратор базы данных, который хотел бы разоблачить все, что он может найти на вашем сервере, чтобы вы выглядели плохо - вот что я имею в виду. – DatWunGai

ответ

0

Вам необходимо создать хранимую процедуру с EXECUTE AS LOGIN SomeLogin с разрешением «Просмотр состояния сервера» и предоставить пользователям доступ к этому для таких нужд. То же самое для команды kill, которую вы должны перенести в такой код + выполнить сначала проверку безопасности

+0

Спасибо @ Andreas.Wolter – DatWunGai

Смежные вопросы