如何在不使用SqlDependency的情况下从存储过程中使用sqlserver服务代理触发C#方法?
当我将新记录插入表中,并将xml从存储过程插入ServiceBroker队列时,我想调用一个C#方法。我可以使用如何在不使用SqlDependency的情况下从存储过程中使用sqlserver服务代理触发C#方法?,c#,sql,asp.net,C#,Sql,Asp.net,当我将新记录插入表中,并将xml从存储过程插入ServiceBroker队列时,我想调用一个C#方法。我可以使用SqlDependency来执行它,但我不需要它-我想使用存储过程来执行它 您可以使用SqlDependecy查看我的代码。但我需要另一种方法,使用SQLServerServiceBroker(而不是DB到DB)从存储过程调用C#方法 不清楚你有什么问题。有很多资源可以解释ServiceBroker是如何工作的,在回答中解释太多了。在客户端,一旦您设置了队列和对话,您只需要一个RECE
SqlDependency
来执行它,但我不需要它-我想使用存储过程来执行它
您可以使用SqlDependecy
查看我的代码。但我需要另一种方法,使用SQLServerServiceBroker(而不是DB到DB)从存储过程调用C#方法
不清楚你有什么问题。有很多资源可以解释ServiceBroker是如何工作的,在回答中解释太多了。在客户端,一旦您设置了队列和对话,您只需要一个
RECEIVE
语句。SqlDependency只是一个使用ServiceBroker的薄面板。您似乎正在着手重新发明那个特定的轮子。@Damien_不相信者:SqlDependency
使用ServiceBroker(专注于瞬时连接)的方式确实使它成为一个值得重新发明的轮子。特别是,即使在任何特定时刻都没有应用程序来接收消息,常规的ServiceBroker对话仍然有效SqlDependency
没有这样做(因为它不是设计用来做这件事的;事实上,它是专门设计用来做相反的事情的)。不清楚您遇到了什么问题。有很多资源可以解释ServiceBroker是如何工作的,在回答中解释太多了。在客户端,一旦您设置了队列和对话,您只需要一个RECEIVE
语句。SqlDependency只是一个使用ServiceBroker的薄面板。您似乎正在着手重新发明那个特定的轮子。@Damien_不相信者:SqlDependency
使用ServiceBroker(专注于瞬时连接)的方式确实使它成为一个值得重新发明的轮子。特别是,即使在任何特定时刻都没有应用程序来接收消息,常规的ServiceBroker对话仍然有效SqlDependency
没有这样做(因为它不是设计来做的;事实上,它是专门设计来做相反的事情的)。
public void Notification()
{
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var queryString = "SELECT [ID] FROM [dbo].[Message]";
using (var oCommand = new SqlCommand(queryString, connection))
{
// Starting the listener infrastructure...
SqlDependency.Stop(connectionString, "queueName");
SqlDependency.Start(connectionString, "queueName");
var oDependency = new SqlDependency(oCommand);
oDependency.OnChange += OnNotificationChange;
// NOTE: You have to execute the command, or the notification will never fire.
oCommand.ExecuteReader();
}
}
}
private void ChangeNotification(object sender, SqlNotificationEventArgs e)
{
Console.WriteLine("Notification Info: " + e.Info);
//Re-register the SqlDependency.
//var oDependency = new SqlDependency();
//oDependency.OnChange -= OnNotificationChange;
RegisterForNotification();
}