我的场景是我从一个 SQL Server 表中获取数据到 vb.net DataTable 中。
现在,如果任何记录被更改或新记录被保存到 SQL Server 表中,我只想将该记录获取或更新到我的数据表中。可能吗。
这是因为我的 SQL 表有超过 100 万条记录,每次获取所有记录几乎是不可能的。
实际上我打算从销售发票表中构建一个条形图,它会在每 1 分钟或固定时间间隔后刷新数据。
我的场景是我从一个 SQL Server 表中获取数据到 vb.net DataTable 中。
现在,如果任何记录被更改或新记录被保存到 SQL Server 表中,我只想将该记录获取或更新到我的数据表中。可能吗。
这是因为我的 SQL 表有超过 100 万条记录,每次获取所有记录几乎是不可能的。
实际上我打算从销售发票表中构建一个条形图,它会在每 1 分钟或固定时间间隔后刷新数据。
您可以将时间戳字段添加到表中。将其设置为插入和更新时的当前时间,然后查询时间戳大于上次查询的最大时间戳的所有记录。
您可以将 SqlDependency 用于数据更改事件。这将确保发生对数据库中特定表的任何更改,将自动触发事件以反映程序中的更改。
在您的数据库中启用代理
ALTER DATABASE [yourdbName] SET ENABLE_BROKER
通过 SqlCommand 在应用程序和数据库之间创建依赖关系。在建立之前,必须为此会话启动 SqlDependency。
SqlDependency.Start(m_ConnectionString);
如前所述,依赖项是基于 SqlCommand 创建的。
SqlDependency 依赖 = new SqlDependency(cmd);
当然,对于此命令中可以包含的内容有一些限制。该命令必须使用两个部分名称,并且不能使用 *. 它显然也不能是 UPDATE 或 INSERT 语句。
以下将不起作用:
SELECT * FROM Message
这将起作用:
SELECT ID, Message FROM dbo.Message
如果查询不正确,将立即发送一个事件:
SqlNotificationEventArgs.Info = 查询
SqlNotificationEventArgs.Source = 声明
SqlNotificationEventArgs.Type = 订阅
有关详细示例和演示应用程序,请参阅使用 SqlDependency 处理数据更改事件