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

Откуда:
Сообщений: 413
Сабж!

Можно ли конкретному юзеру дать разрешение на выполнение трассировки только на уровне конкретной базы данных, то есть без доступа к любым другим БД на этом сервере?


ПС: Прав на весь сервер нет и по соображениям безопасности их дать на весь сервер нельзя (в том числе для трассировки) - только на конкретные базы.

Иными словами, можно ли выполнить GRANT ALTER TRACE ON TO [user] и затем сузить его права на трассировку только одной базы?

Спасибо!
3 окт 11, 14:37    [11374327]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
notricky,

Не бывает трассировки базы, бывает трассировка событий сервера.

ALTER TRACE - разрешение на сервер.


P.S. Что, в данном контексте, понимается под доступом к другим БД?
3 окт 11, 14:42    [11374368]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
notricky
Member

Откуда:
Сообщений: 413
baracs
notricky,

Не бывает трассировки базы, бывает трассировка событий сервера.

ALTER TRACE - разрешение на сервер.


P.S. Что, в данном контексте, понимается под доступом к другим БД?


Ситуация такая: на одном инстансе крутятся несколько разных БД. Есть пользователь с доступом только на уровне БД к определенным БД. Доступа к серверным объектам нет. Ко всем БД тоже нет (он их видит, но доступа к объектам некоторых баз нету).

Отвечая на вопрос - пользователь может подключиться и работать (в том числе в SQL Management Studio) только к определенным базам.

нужно воспользоваться Profiler для того, что бы понять, какие запросы выполняются одним приложением к конкретной базе. При этом не иметь возможности смотреть что там с другими базами происходит. (доступ на трассировку всех баз не дадут).
3 окт 11, 15:17    [11374727]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
komrad
Member

Откуда:
Сообщений: 5735
notricky
При этом не иметь возможности смотреть что там с другими базами происходит. (доступ на трассировку всех баз не дадут).


возможно поможет serverside tracing + установка фильтра на конкретную БД
3 окт 11, 15:43    [11374986]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
komrad
notricky
При этом не иметь возможности смотреть что там с другими базами происходит. (доступ на трассировку всех баз не дадут).


возможно поможет serverside tracing + установка фильтра на конкретную БД
Это поможет, если только повезёт.
То есть если эти коннекты будут работать только со своей базой.

А если, к примеру, сисадмин будет что то делать с другими базами - всё будет видно.
3 окт 11, 16:05    [11375267]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
komrad
Member

Откуда:
Сообщений: 5735
alexeyvg
komrad
пропущено...


возможно поможет serverside tracing + установка фильтра на конкретную БД
Это поможет, если только повезёт.
То есть если эти коннекты будут работать только со своей базой.
А если, к примеру, сисадмин будет что то делать с другими базами - всё будет видно.


а постановка вопроса именно такой и была изначально:

цитата
выполнение трассировки только на уровне конкретной базы данных
3 окт 11, 16:17    [11375407]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
komrad
alexeyvg
пропущено...
Это поможет, если только повезёт.
То есть если эти коннекты будут работать только со своей базой.
А если, к примеру, сисадмин будет что то делать с другими базами - всё будет видно.


а постановка вопроса именно такой и была изначально:

цитата
выполнение трассировки только на уровне конкретной базы данных
Дык, ТС интересуется, как это обеспечить, на сколько я понял...
3 окт 11, 16:45    [11375783]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
komrad
Member

Откуда:
Сообщений: 5735
baracs
komrad
пропущено...


а постановка вопроса именно такой и была изначально:

пропущено...
Дык, ТС интересуется, как это обеспечить, на сколько я понял...


Например, так:
создать серверный трейс на сервере и стартовать/стопить по требованию пользователя; файл забирать будет сам
или
дать ему право стартовать определенный трейс (либо напрямую, либо через процедуру-обертку).
3 окт 11, 16:53    [11375861]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
komrad
alexeyvg
пропущено...
Это поможет, если только повезёт.
То есть если эти коннекты будут работать только со своей базой.
А если, к примеру, сисадмин будет что то делать с другими базами - всё будет видно.


а постановка вопроса именно такой и была изначально:

цитата
выполнение трассировки только на уровне конкретной базы данных
Я думаю, ТС хочется дать возможность трассировать все действия, которые делаются в определённой базе.

А это не то же самое, что трассировать коннекты, у которых эта база установлена в качестве контекста.
komrad
baracs
Дык, ТС интересуется, как это обеспечить, на сколько я понял...


Например, так:
создать серверный трейс на сервере и стартовать/стопить по требованию пользователя; файл забирать будет сам
или
дать ему право стартовать определенный трейс (либо напрямую, либо через процедуру-обертку).
И тогда приложение или администратор будет работать с другими базами, а пользователь будет это видеть.
3 окт 11, 17:19    [11376148]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
alexeyvg
Member

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

то есть нужно сначала ответить на вопрос:
baracs
P.S. Что, в данном контексте, понимается под доступом к другим БД?
3 окт 11, 17:19    [11376158]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
komrad
Member

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

то есть нужно сначала ответить на вопрос:
baracs
P.S. Что, в данном контексте, понимается под доступом к другим БД?


согласен
гадать без автора можно долго )
3 окт 11, 17:32    [11376303]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
notricky
Member

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

то есть нужно сначала ответить на вопрос:
пропущено...


согласен
гадать без автора можно долго )


Сорри други! Я наивно полагал, что ответил на вопрос. )

Попробую еще раз.
1. Есть инстанс с 20ю базами
2. Есть пользователь vasya с доступом к базе Vasya-test. В management studio видит все базы, но посмотреть объекты может только Vasya-test. Серверные объекты (планировщик и все остальное) - то же не видит.
3. Есть доступ "видеть" системные базы (master, msdb)

Надо:
1. Не дать ему доступ на сервер (в том числе и трейсовать все что ни попадя) - то есть оставить как это уже есть.
2. Не дать ему доступ к остальным 19 базам (в плане трейса) - то есть аналогично предыдущему пункту.
3. Не дать ему доступ к серверной части.
4. Дать ему возможность трассировать все запросы (селекты, апдейты и тд) касательно только базы Vasya-test.
3 окт 11, 17:59    [11376563]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
А запрос select * from Vasya-test.dbo.таблица inner join Не-Vasya-test.dbo.таблица - он к какой базе относится?

Сообщение было отредактировано: 3 окт 11, 18:01
3 окт 11, 18:01    [11376582]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
notricky
Member

Откуда:
Сообщений: 413
Гавриленко Сергей Алексеевич
А запрос select * from Vasya-test.dbo.таблица inner join Не-Vasya-test.dbo.таблица - он к какой базе относится?
Пулю в мозг тока что мне пустили своим вопросом.

Попробую догадаться :) - хотите сказать, что не удастся выдать разрешение трассировки только на 1 базу?
3 окт 11, 18:37    [11376834]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
Glory
Member

Откуда:
Сообщений: 104751
notricky
Попробую догадаться :) - хотите сказать, что не удастся выдать разрешение трассировки только на 1 базу?

Потому что любой запрос использует ресурсы сервера. А контекст текущей базы вовсе не лишает пользователя возможности обращаться к другим базам
3 окт 11, 18:43    [11376872]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
notricky
Гавриленко Сергей Алексеевич
А запрос select * from Vasya-test.dbo.таблица inner join Не-Vasya-test.dbo.таблица - он к какой базе относится?
Пулю в мозг тока что мне пустили своим вопросом.

Попробую догадаться :) - хотите сказать, что не удастся выдать разрешение трассировки только на 1 базу?
Ну так об этом и сказали с самого начала.

Всё остальное можно сделать, но вот с этим...

Единственно, можно надеяться, что программа не обращается к чужим базам, и админы не работают в контексте этой базы. Тогда можно сделать способом, предложенным выше.

Ещё можно дополнить способ фильтром по имени приложения, если приложение его корректно выставляет.
3 окт 11, 19:00    [11377045]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
notricky
Member

Откуда:
Сообщений: 413
alexeyvg
notricky
пропущено...
Пулю в мозг тока что мне пустили своим вопросом.

Попробую догадаться :) - хотите сказать, что не удастся выдать разрешение трассировки только на 1 базу?
Ну так об этом и сказали с самого начала.

Всё остальное можно сделать, но вот с этим...

Единственно, можно надеяться, что программа не обращается к чужим базам, и админы не работают в контексте этой базы. Тогда можно сделать способом, предложенным выше.

Ещё можно дополнить способ фильтром по имени приложения, если приложение его корректно выставляет.
выходит что так.

но пока что мы говорим о программе SQL Profiler.
3 окт 11, 19:35    [11377263]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
notricky,

На уровне sql Profiler-а кажется нельзя ограничить трасировку по базе
http://msdn.microsoft.com/ru-ru/library/ms187611.aspx

Так может написать хп, которая записывает всю трасировку по базе в какую-нибудть таблицу
https://www.sql.ru/articles/mssql/01062702SchedulingSQLServerProfilerTraceUsingExtendedStoredProcedures.shtml

В этом случае нужен доступ на выполнение хп, и чтение таблицы.
3 окт 11, 20:08    [11377411]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
notricky
alexeyvg
Единственно, можно надеяться, что программа не обращается к чужим базам, и админы не работают в контексте этой базы. Тогда можно сделать способом, предложенным выше.

Ещё можно дополнить способ фильтром по имени приложения, если приложение его корректно выставляет.
выходит что так.

но пока что мы говорим о программе SQL Profiler.
Уж в профайлере этро точно невозможно.
3 окт 11, 20:30    [11377471]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
notricky
Member

Откуда:
Сообщений: 413
trew
notricky,

На уровне sql Profiler-а кажется нельзя ограничить трасировку по базе
http://msdn.microsoft.com/ru-ru/library/ms187611.aspx

Так может написать хп, которая записывает всю трасировку по базе в какую-нибудть таблицу
https://www.sql.ru/articles/mssql/01062702SchedulingSQLServerProfilerTraceUsingExtendedStoredProcedures.shtml

В этом случае нужен доступ на выполнение хп, и чтение таблицы.


Скачал сторонний AnjLab SQL Profiler - при попытке подключиться под тем самым пользователем выдает нечто про отсутствие прав и необходимость выполнить GRANT ALTER TRACE TO [user].
Вопрос - зачем трассировщику выполнять меня что-то в трассировках?

Где или как запускать подобную хранимку? Возможно ли это реализовать посредством DDL триггеров на сервере/базе (при условии что нужно смотреть запросы SQLCmd)?
4 окт 11, 10:01    [11378897]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
iljy
Member

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

какую еще хранимку? Вам профайлер говорит, что у вас нет прав на выполнение трассировки, и говорит, какой командой можно эти права выдать.
4 окт 11, 10:16    [11379003]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
notricky
trew
notricky,

На уровне sql Profiler-а кажется нельзя ограничить трасировку по базе
http://msdn.microsoft.com/ru-ru/library/ms187611.aspx

Так может написать хп, которая записывает всю трасировку по базе в какую-нибудть таблицу
https://www.sql.ru/articles/mssql/01062702SchedulingSQLServerProfilerTraceUsingExtendedStoredProcedures.shtml

В этом случае нужен доступ на выполнение хп, и чтение таблицы.


Скачал сторонний AnjLab SQL Profiler - при попытке подключиться под тем самым пользователем выдает нечто про отсутствие прав и необходимость выполнить GRANT ALTER TRACE TO [user].
Вопрос - зачем трассировщику выполнять меня что-то в трассировках?
Хоть родной SQL Profiler, хоть сторонний - суть клиенты, создающие и запускающие трассировку с помощью соответствующих системных хранимых процедур и функций (об этом статья, на которую вам komrad ссылку давал).
Для выполнения этих действий нужно разрешение ALTER TRACE, о чем в сообщении и говорится.

notricky
Возможно ли это реализовать посредством DDL триггеров на сервере/базе (при условии что нужно смотреть запросы SQLCmd)?
Что "это"?
Можно организовать журналирование событий "языка определения данных"...
4 окт 11, 11:50    [11379739]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
notricky
Скачал сторонний AnjLab SQL Profiler
Зачем скачали???

Все сторонние профайлеры - это разные интерфейсы к одной функциональности.

Для начала нужно научиться пользоваться комплектным оригинальным профайлером, и если он вас полностью устраивает, но вы хотите другой вид экрана или пару дополнительных кнопок, можете скачать AnjLab SQL Profiler или ещё какой-либо другой.

notricky
при попытке подключиться под тем самым пользователем выдает нечто про отсутствие прав и необходимость выполнить GRANT ALTER TRACE TO [user].
Вопрос - зачем трассировщику выполнять меня что-то в трассировках?
Он вам просто говорит, что нету прав на трейс.
4 окт 11, 12:07    [11379906]     Ответить | Цитировать Сообщить модератору
 Re: Как выдать разрешение на трассировку пользователю только в одной БД?  [new]
notricky
Member

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

скачал за тем, что бы не качать 4 гб дистрибутива Стандарта, где этот профайлер лежит. Где скачать профайлер отдельно на мелкософтовом сайте найти не удалось.

ijiy, спасибо, я довольно хорошо понимаю английский, в котором мне выдавалось это сообщение. :)

baracs
Можно организовать журналирование событий "языка определения данных"...

Именно!

alexeyvg,
Вопрос - зачем трассировщику выполнять меня что-то в трассировках?
Он вам просто говорит, что нету прав на трейс.
да просто вопрос непонятно написал. А то, что он говорит - мне просто понятно. :)

В общем резюмируя заданный вопрос: никак, кроме возможно serverside - и то я не уверен.
4 окт 11, 16:37    [11382925]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить