我有一个.NET 6 Web API和一个托管在Azure上的SQL Server,我需要使用SQL Server Service Broker来接收和捕获数据库中表更改的通知。这样,我就避免了向数据库发出多次请求以确定是否已包含预期的数据。但是,当我启动SqlDependency时,返回以下错误:“此版本的SQL Server不支持语句'RECEIVE MSG'。”我确实需要Microsoft.Data.SqlClient包中的此功能。
我正在program.cs中初始化SqlDependency,如下所示:
SqlDependency.Start(builder.Configuration["ConnectionStrings:db"]);
我使用SqlDependency的代码看起来像这样:
var tcs = new TaskCompletionSource<Game>(TaskCreationOptions.RunContinuationsAsynchronously);
var dependency = new SqlDependency(command);
dependency.OnChange += (sender, args) =>
{
tcs.TrySetCanceled(cancellationToken);
};
这样,我就可以捕获数据库通知并执行必要的操作。
有谁知道为什么SqlDependency不起作用,并可以建议一个替代包?我将非常感激。
1条答案
按热度按时间dldeef671#
丹·古兹曼的评论很有用,我也发现了这个。我还有另一个建议给你。
我发现了Azure SQL触发器。Azure SQL触发器绑定使用轮询循环来检查更改,并在检测到更改时触发用户函数。
Azure SQL bindings for Azure Functions overview (preview)