当前位置:  开发笔记 > 后端 > 正文

.Net SQL Server数据库监控 - 插入,更新,删除

如何解决《.NetSQLServer数据库监控-插入,更新,删除》经验,为你挑选了1个好方法。

有谁知道从.Net应用程序监视SQL Server(2005或2008)数据库中的表记录更改的方法?它需要能够一次支持多个客户端.每个客户端在启动时都会"订阅",并在退出时"取消订阅".多个用户可以立即访问系统,我想在其他用户客户端上反映他们的更改.然后,当客户端处理更改事件时,它可以更新它表示该记录的本地对象.类似于修改的Access更新记录的方式反映在引用它的每个表单中.

我知道microsoft有他们的Microsoft.SqlServer库用于与SQL Server交互.但我不确定哪个概念适用于我想做的事情(或者可以弯曲以适用于我想做的事情).听起来可能有用的是管理者或复制者.

期待有人问,"你为什么不偶尔重新询问桌子以寻找新的信息?" 我有大量的桌子需要监控,这对屁股很痛苦.此外,如果我正在寻找更优雅的东西.

我愿意接受建议......



1> 小智..:

要监视SQL 2005+中SQL表或记录的更改,可以使用SqlDependency类.

它的目标是在ASP.NET或中间层服务中使用,其中单个服务器正在管理针对数据库的活动订阅 - 而不是数百个管理订阅的客户端.根据您引用的最大客户端数量,您可能需要构建一个缓存池服务,该服务可以管理针对客户端的SQL的通知订阅.

在里面它使用SqlNotificationRequest,它使用Service Broker,而不是Notification Services.因此,这应该在SQL 2008等上继续工作.

SqlDependency的MSDN

void Initialization()
{
    // Create a dependency connection.
    SqlDependency.Start(connectionString, queueName);
}

void SomeMethod()
{
  // Assume connection is an open SqlConnection.

  // Create a new SqlCommand object.
  SqlCommand command=new SqlCommand(
    "SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", 
    connection);

  // Create a dependency and associate it with the SqlCommand.
  SqlDependency dependency=new SqlDependency(command);
  // Maintain the refence in a class member.

  // Subscribe to the SqlDependency event.
  dependency.OnChange+=new OnChangeEventHandler(OnDependencyChange);

  // Execute the command.
  command.ExecuteReader();
  // Process the DataReader.
}

// Handler method
void OnDependencyChange(object sender, 
   SqlNotificationsEventArgs e )
{
  // Handle the event (for example, invalidate this cache entry).
}

void Termination()
{
    // Release the dependency.
    SqlDependency.Stop(connectionString, queueName);
}

" 使用和监视SQL 2005查询通知 "一文,介绍了在代码中设置它的步骤(使用Web应用程序作为示例)以及订阅Service Broker所需的相应SQL权限等.

一个ASP.NET(网页缓存)类也可用于Web方案.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有