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

Откуда:
Сообщений: 442
Нужно заблокировать селекты определенного вида(по синтаксису) для приложения исходников которого нет(ограничение минимальной и максимальной даты выборки).

Может есть у кого идеи как можно сделать хп которая бы вызывалась при селекте из таблице и могла бы оборвать выборку?
22 июн 12, 14:33    [12760446]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
BERSERC
Member

Откуда:
Сообщений: 442
p.s. приложение не вызывает х.п. а формирует текст select'а
22 июн 12, 14:34    [12760457]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Нельзя. Отбирайте права, подсовывайте view.

Сообщение было отредактировано: 22 июн 12, 14:36
22 июн 12, 14:35    [12760473]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
BERSERC
Member

Откуда:
Сообщений: 442
Гавриленко Сергей Алексеевич, спасибо
22 июн 12, 14:52    [12760650]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
BERSERC
Member

Откуда:
Сообщений: 442
Гавриленко Сергей Алексеевич, попробую подсунуть вьюшку вместо таблицы, которая делает селект из функции табличного вида.
Но насколько я знаю в функциях нельзя делать exec (@variable), для получения текста запроса , что не скажешь про CLR, может и получится...)
22 июн 12, 15:00    [12760709]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
aleonov
Member

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

есть еще вариант мониторить выполняющиеся запросы:


SELECT st.text,
s.hostname, qs.session_id, qs.start_time, qs.cpu_time, qs.total_elapsed_time
,(SELECT SUBSTRING(text,statement_start_offset/2,(CASE WHEN statement_end_offset = -1 then LEN(CONVERT(nvarchar(max), text)) * 2
ELSE statement_end_offset end -statement_start_offset)/2) ) text1
FROM sys.dm_exec_requests AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
JOIN master..sysprocesses s on s.spid = qs.session_id


и прибивать сессии которые выполняют нежелательный код.
22 июн 12, 15:17    [12760851]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
BERSERC
Member

Откуда:
Сообщений: 442
System.Data.SqlClient.SqlException: Недопустимое использование оператора "DBCC", оказывающего побочное действие, в функции.


((((
22 июн 12, 15:19    [12760875]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
BERSERC
Member

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

Круто! спасибо, это то что нужно!
22 июн 12, 15:25    [12760954]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
BERSERC
aleonov,

Круто! спасибо, это то что нужно!
А вы подумали, что будет, если ваши зловредные запросы будут успевать выполняться за промежуток времени между вызовами мониторящего запроса?
22 июн 12, 17:04    [12761851]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
BERSERC, обязательно обрывать выборку? А если создать view, в котором просто наложить фильтр на нежелательный диапазон дат, чтобы она ничего не выбрала?

Или что-нибудь в этой view сделать такое, чтобы записи из нежелательного интервала дат создавали какую-нибудь ошибку (деление на ноль или ещё что-нибудь)?
22 июн 12, 22:09    [12763006]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Если есть возможность в теле программы подкорректировать запрос, то можно вставить в WHERE вызов sql ф-ции, кот. для нежелательных пользователей/параметров и т.д. выдаст, допустим false или деление на ноль.
25 июн 12, 11:00    [12768677]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли повесить триггер на селект?  [new]
RubinDm
Member

Откуда:
Сообщений: 461
LSV
... в теле программы подкорректировать запрос ...
Т.е. в бинарнике найти и тупо корректировать строку запроса?
25 июн 12, 13:15    [12770002]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить