将SQLServerServiceBroker与.NET6和Microsoft.Data.SqlClient包一起使用

ybzsozfc  于 2023-04-07  发布在  .NET
关注(0)|答案(1)|浏览(138)

我有一个.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不起作用,并可以建议一个替代包?我将非常感激。

dldeef67

dldeef671#

丹·古兹曼的评论很有用,我也发现了这个。我还有另一个建议给你。
我发现了Azure SQL触发器。Azure SQL触发器绑定使用轮询循环来检查更改,并在检测到更改时触发用户函数。
Azure SQL bindings for Azure Functions overview (preview)

相关问题