天道酬勤,学无止境

sqldependency

SqlDependency vs SQLCLR call to WebService

问题 我有一个桌面应用程序,应该在任何表格更改时收到通知。 因此,我发现只有两个解决方案非常适合我的情况: SqlDependency和SQLCLR 。 (我想知道 .NET 堆栈中是否有更好的)我已经构建了这两种结构并使它们工作。 我只能比较从 SQL Server 到客户端的 s̲i̲n̲gl̲e̲ 响应的持续时间。 SqlDependency 持续时间:从 100 毫秒到 4 秒 SQLCLR 持续时间:从 10 毫秒到 150 毫秒 我希望这种结构能够处理高频率通知*,我已经阅读了一些 SO 和博客文章(例如:here),并且还从一位同事那里得到警告,在大量请求时 SqlDependency 可能会出错。 在这里,MS 提供了一些我没有得到的东西,这可能是我问题的另一种解决方案。 *:不是所有时间,而是一个季节; 在 1-2 个服务器上每秒 50-200 个请求。 在高通知率和性能并行的基础上,我应该继续使用这两个中的哪一个,或者还有其他选择吗? 回答1 SqlDependency (即查询通知)和 SQLCLR(即通过触发器调用 Web 服务)都不适用于该流量(每秒 50-200 个请求)。 事实上,在这些数量上,这两种选择都非常危险。 在两个链接页面(SoftwareEngineering.StackExchange.com 和 TechNet 文章

2022-05-17 03:02:16    分类:技术分享    sql-server   signalr   sqlclr   sqldependency   database-trigger

SqlDependency Only Fires On Subscribe

问题 我正在尝试在 SignalR 项目中使用SqlDependancy ,但我似乎无法让OnChanged事件多次触发。 它最初在订阅事件上触发,但在对底层数据库进行更改后不再触发。 我省略了 SignalR 和控制器代码,因为问题似乎出在存储库类中。 SqlDependancy.Start()在我的Global.asax类中声明。 从 SQL 服务器观察,我可以看到在我的应用程序启动时创建了一个通知队列,并在我关闭时终止。 public IEnumerable<Visitor> NotifyAllClients() { List<Visitor> visitors = new List<Visitor>(); using (var connection = new SqlConnection(new VisitorLogEntities().Database.Connection.ConnectionString)) { using (var command = new SqlCommand(@"SELECT * FROM dbo.Visitors", connection)) //using (var command = new SqlCommand(@"SELECT [Id],[AgreeToTerms],[Base64Image],[CheckInDate]

2022-05-12 11:32:10    分类:技术分享    c#   sql-server   signalr   sqldependency

SQL Query Notifications do not always work in scaleout setup (SQL Server)

问题 SQL 查询通知在我们的环境中并不总是有效。 它们似乎工作了一段时间,然后我们在 SqlDependency.Start(...) 方法调用上得到一个 ArgumentException(用于模拟的无效令牌 - 它不能重复)异常,并且 SqlMessageBus 回退到使用轮询机制。 之后,在释放 SQL 消息总线之前不会尝试 SQL 查询通知。 看来,SqlMessageBus 并不总是看到 SqlDependency 已经启动并尝试再次启动它。 在日志中(见下文),我看到以下事件序列: 启动 SQL 通知侦听器 SQL 通知侦听器已启动已触发 SQL 通知更改启动 SQL 通知侦听器 SQL 通知侦听器已在运行设置 SQL 通知已触发 SQL 通知更改 SQL 通知超时再次启动接收循环以处理更新启动 SQL 通知侦听器启动 SQL 通知侦听器时出错 环境: .NET 4.5.2 Windows 7 上的 WinForms 客户端 2 在 Windows Server 2012 R2 上托管在 IIS 8.5 中的应用程序服务器(使用 Windows 身份验证和模拟) 负载均衡器信号R 2.2 SQL Server 2008 R2 SP3(使用 SQL Server 身份验证) 以下是捕获的日志的摘录。 如果需要,我可以提供完整的日志。 ... SignalR

2022-05-10 07:14:04    分类:技术分享    c#   sql-server   notifications   signalr   sqldependency

SqlDependency Only Fires On Subscribe

I'm trying to make use of SqlDependancy in a SignalR project, but I can't seem to get the OnChanged event to fire more than once. It fires initially on the subscribe event, but it never fires again after making changes to the underlying database. I've omitted my SignalR and controller code because the problem seems to lie in the repository class. SqlDependancy.Start() is declared in my Global.asax class. Watching from the SQL server, I can see a notification queue is created when my application starts, and is terminated when I close as well. public IEnumerable<Visitor> NotifyAllClients() {

2022-05-01 05:42:19    分类:问答    c#   sql-server   signalr   sqldependency

SqlDependency vs SQLCLR call to WebService

I have a desktop application which should be notified on any table change. So, I found only two solutions which fits well for my case: SqlDependency and SQLCLR. (I would like to know if there is better in .NET stack) I have built the both structure and made them work. I only able to compare the duration of a s̲i̲n̲gl̲e̲ response from SQL Server to the client. SqlDependency Duration: from 100ms to 4 secs SQLCLR Duration: from 10ms to 150ms I would like this structure to be able to deal with high rate notifications*, I have read a few SO and blog posts (eg: here) and also am warned from a

2022-04-29 19:58:47    分类:问答    sql-server   signalr   sqlclr   sqldependency   database-trigger

Database change notifications in asp.net core using signalr and sqldependency

If I made any changes in SQL table row then UI should automatically refresh the new changes without F5 or reloading the browser. I have already tried this in asp.net mvc and its working good but I'm unable to do in asp.net mvc core..

2022-04-29 05:03:38    分类:问答    c#   .net-core   signalr   sqldependency   asp.net-core-signalr

SQL Query Notifications do not always work in scaleout setup (SQL Server)

SQL Query Notifications do not always work in our environment. They seem to work for a little while, and then we get an ArgumentException (Invalid token for impersonation - it cannot be duplicated) exception on SqlDependency.Start(...) method call, and SqlMessageBus falls back to using polling mechanism. After that, SQL Query Notifications are not attempted until the SQL message bus has been disposed. It seems that, SqlMessageBus doesn't always see that SqlDependency has already been started and tries to start it again. In the log (see below), I see the following sequence of events: Starting

2022-04-28 03:25:31    分类:问答    c#   sql-server   notifications   signalr   sqldependency

SqlDependency in asp.net

问题 我正在使用 SqlDependency 来控制我的缓存。 我想用它来监控几个表(大约 10 个)。 每个被监视的表应该有一个 SqlDependency。 我应该为他们每个人创建这样的代码: public void CreateDependency_Table() { if (connectionStringSettings != null) { using (SqlConnection conn = new SqlConnection(connectionStringSettings.ConnectionString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("SELECT id from dbo.Table", conn)) { cmd.Notification = null; SqlDependency sqlDependency = new SqlDependency(cmd); sqlDependency.OnChange += new OnChangeEventHandler(sqlDep_Table_OnChange); using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { } }

2022-04-23 15:16:16    分类:技术分享    asp.net   sqldependency

SignalR and SqlDependency refreshment issue - ASP.NET

问题 我在 MSSQL 数据库中有一个表,我有一个 ASPX 页面,我需要按降序将所有新行推送到页面。 我发现这个使用 SignalR 和 SqlDependency 的很棒的教程,它只显示了我在线时添加的前一行的最后一行,它这样做是因为它有一个 span 元素来显示数据并且每次它都会覆盖这个跨度,所以我修改了 JavaScript 代码以附加新数据,它工作正常。 现在的问题是当我第一次刷新页面时,我将获得两次新行,如果我再次刷新页面,我将获得三次新行......等等。 唯一的解决方案是关闭应用程序并重新打开它,它看起来像重置 IIS。 那么,如何避免在线节目中出现重复数据呢? 回答1 这不是 SignalR 问题,发生这种情况是因为提到的教程有一系列错误,最明显的事实是它不断创建SqlDependency实例,但随后将它们丢弃而从未取消订阅OnChange事件。 您应该首先添加如下内容: SqlDependency dependency = sender as SqlDependency; dependency.OnChange -= dependency_OnChange; 在事件处理程序中调用SendNotifications之前。 检查这个以获得一些灵感。 更新(以前的答案不完全准确,但保留在上下文中) 这里的主要问题是,这种技术会从 Web

2022-04-21 01:18:34    分类:技术分享    asp.net   webforms   signalr   sqldependency

SqlDependency doesn't fire on row insertion (or update, or delete)

问题 在接下来的几个小时里我的头撞到墙上之后,我慢慢开始意识到我的问题出在哪里,所以让我给你一个回顾:当一行插入数据库时​​,我正在尝试更改网站的字符串,但由于某种原因,当插入、更新或发生任何事情时,当数据库发生更改时,我所做的触发器告诉我根本不会触发。 表的 Service Broker 已打开。 这是涉及的代码: namespace WebApplication.SignalR_Data { public class NotificationRepository { public NotificationInfo GetData() { using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ReservationDbContext"].ConnectionString)) { connection.Open(); using (SqlCommand command = new SqlCommand(@"SELECT COUNT(*) FROM dbo.Reservations", connection)) { command.Notification = null; SqlDependency dependency = new SqlDependency(command

2022-04-19 11:13:03    分类:技术分享    c#   sql   sql-server   signalr   sqldependency