У меня есть программа на С#, которая позволяет пользователям отправлять и получать текстовые сообщения, сервер, получающий входящие тексты, анализирует сообщения, а затем помещает их в базу данных SQL, и мне было интересно, есть ли способ обнаружить вставку новой строки в эту базу данных и запустить событие, которое уведомляет пользователя о новом входящем сообщении?
Я полагаю, что u использует класс SqlDependency.
Вот пример кода:
Это долго читается, но я предлагаю вам взглянуть на следующую статью MSDN.
Есть конечно. Вы можете написать триггер, или вы можете использовать механизм Change Data Capture.
Я бы предложил использовать службу Windows, которая будет отслеживать сообщения, добавленные в базу данных SQL Server, а затем запустить соответствующее действие. Другим способом будет использование MSMQ, где вы можете отправить сообщение в MSMQ после его вставки в базу данных. Стол
User Id , MessageCount Last Message DateTime
1 2 1/1/2014 12:30
и обновите эту таблицу, когда получите сообщение.
SQL-триггер после вставки
Принимая во внимание приведенный ниже комментарий, мой ответ все тот же:
http://www.codeproject.com/questions/341680/Using-Triggers-in-Csharp-and-Sql-Server
И подобный вопрос задал здесь:
Почему бы вам не попробовать триггеры CLR?
http://msdn.microsoft.com/en-us/library/ms254959%28v=vs.110%29.aspx
Вы можете запустить событие из процедуры CLR.
Хотя это и не так. Эти сообщения должны быть помещены в очередь ServiceBus и обрабатываться асинхронно на отдельном потоке или процессе (например, роль рабочего в Azure?)
sql
и означаетsql-server
- CDC является специфической функцией SQL Server