Я пытаюсь использовать sql Dependency, чтобы проверить, что данные таблицы были изменены другими клиентами. Я следил за турбулентностью здесь, но когда я пытаюсь создать очередь, я получаю следующее сообщение об ошибке, это мой код на c # и оператор sql.
Редактировать 1 Извините, я забыл включить учебник в свой первый пост, здесь есть ссылка в учебнике, в которой указано quename, но не сказано, как его создать.
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/detecting-changes-with-sqldependency
CREATE QUEUE ExportedOrdersChangeMessage CREATE SERVICE ExportedOrdersService ON QUEUE ExportedOrdersChangeMessage ([http://schemas.microsoft.com/SQL/Notification/PostQueryNotification])
Ошибка, полученная после выполнения вышеуказанного, следующая.
Сообщение 15151, уровень 16, состояние 1, строка 5 c 'http://schemas.microsoft.com/SQL/Notification/PostQueryNotification',, поскольку его не существует или у вас нет разрешения.
В основном то, что я хочучтобы быть в состоянии сделать, если пользователь пытается изменить запись, я хочу отправить уведомление другим клиентам. Это лучший метод для этого подхода, это бизнес winformsss app, если какие-либо другие библиотеки, облегчающие эту задачу, были бы хороши.
Я использую sql Server 2017 Express, который, как я полагаю, будет иметь это как стандарт? *
private void DetectChanges()
{
// Assume connection is an open SqlConnection.
string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
using (SqlConnection con = new SqlConnection(connectionString))
{
// Create a new SqlCommand object.
using (SqlCommand command = new SqlCommand("SELECT exportedtoMeteor FROM dbo.exported", con))
{
// Create a dependency and associate it with the SqlCommand.
SqlDependency dependency = new SqlDependency(command);
// Maintain the reference in a class member.
SqlDependency.Start(connectionString, "ExportedOrdersChangeMessage");
// Subscribe to the SqlDependency event.
dependency.OnChange += new
OnChangeEventHandler(OnDependencyChange);
// Execute the command.
using (SqlDataReader reader = command.ExecuteReader())
{
// Process the DataReader.
}
}
}
}
// Handler method
void OnDependencyChange(object sender, SqlNotificationEventArgs e)
{
// Handle the event (for example, invalidate this cache entry).
}
void Termination()
{
string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
// Release the dependency.
SqlDependency.Stop(connectionString, ExportedHacket);
}