Приветствую всех!Запуск хранимой процедуры при запросе без SqlDependency
В SqlDependency вы можете легко подписаться на изменение данных с помощью механизма уведомления о запросе. (Или setting odbc attributes)
SqlDependency dependency = new SqlDependency(
new SqlCommand("SELECT [ID], [Name] FROM [dbo].[tbl_Contact]", this.CurrentConnection)
);
dependency.OnChange += this.dependency_OnChange;
С другой стороны, с помощью собственной SQL можно выполнить хранимую процедуру на каком-то событии DMV. (Например, выход пользователя)
create queue [myEventQueue] with activation (
status = on,
procedure_name = dbo.QueueProcessing,
max_queue_readers = 2,
execute as self
)
create service [myNotifications] on queue [myEventQueue]
([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]);
CREATE EVENT NOTIFICATION [myEvent]
ON server
FOR AUDIT_LOGOUT
TO SERVICE 'myNotifications', 'current database'
Мой вопрос:
- Можем ли мы создать и subcribe некоторый запрос событий на изменение данных без SqlDependency (используя нативный T-SQL в Managment Studio)?
- Можем ли мы выполнить хранимую процедуру, когда «некоторые данные изменены»?
Благодарим за помощь!
P.S. Почему я не могу использовать триггеры?
У меня около 200 событий, которые зависят от нескольких таблиц с различными предикатами (фильтрами). К сожалению, пользователи могут его изменить.
Да, вы можете. SqlDependency использует Service Broker SQL Server. Вы можете использовать сообщения из очереди Service broker непосредственно в SQL. [читайте это.] (https://msdn.microsoft.com/en-us/bb522893.aspx) –
@ ZoharPeled, я знаю, что они работают на одной и той же технологии, но я не могу найти, как подписываться на изменение данных. Ссылка не помогла :( – alex7z
небольшая помощь от google возвращена [этот список учебников] (https://technet.microsoft.com/en-us/library/bb839489 (v = sql.105) .aspx) в MSDN. первый должен помочь вам. –