相关疑难解决方法(0)

如何通知DB表更改(sql 2005)的Windows服务(c#)?

我在SQL2005数据库中有一个负载很重的表(许多插入/更新/删除).我想尽可能接近实时地对所有这些更改进行一些后期处理(异步以便不以任何方式锁定表).我看了很多可能的解决方案,但似乎无法找到一个感觉正确的整洁解决方案.

后期处理的类型也相当繁重,以至于Windows侦听器服务实际上将处理传递给许多机器.然而,应用程序的这部分已经启动并运行,完全异步,而不是我需要帮助 - 我只是想提及这只是因为它影响设计决策,因为我们不能只加载一些CLR对象DB完成处理.

所以,简单的问题仍然存在:表中的数据更改,我想在远程服务器上的c#代码中进行一些处理.

目前我们已经提出使用一个sql触发器,它执行"xp_cmdshell"来启动一个引发windows服务正在侦听的事件的exe.这只是感觉很糟糕.

但是,我在网上看到的其他解决方案也让人感到相当费解.例如,设置SQLCacheDependancy还涉及必须设置Service Broker.另一个可能的解决方案是使用CLR触发器,它可以调用Web服务,但是这里有很多关于它的警告,这是一个糟糕的方法,尤其是在性能至关重要时.

理想情况下,我们不会对表格进行更改,而是会拦截我们的应用程序中的调用并从那里通知服务,遗憾的是,虽然我们有一些遗留应用程序也会对数据进行更改,并且监视表格是唯一的集中位置此时此刻.

非常感激任何的帮助.

摘要:

  • 需要实时响应表数据的变化
  • 表现至关重要
  • 预计会有大量的流量
  • 轮询和计划任务不是一种选择(或实时)
  • 实施服务代理太大(但可能只是解决方案?)
  • CLR代码尚未排除,但如果建议则需要执行
  • 监听器/监视器可能是远程机器(可能是相同的物理网络)

c# triggers sql-server-2005 sqlclr

16
推荐指数
1
解决办法
2万
查看次数

在sql数据库中查看表新记录

我在Windows应用程序中使用EF,我希望我的应用程序在某个表中插入新记录时执行某些任务"这些新记录将由使用相同数据库的网站插入"
我的问题是如何查看此表更改并在新记录到来时收到通知,在这种情况下EF可以帮助我吗?

更新: 我使用了SqlDependency类并在db中使用了它

ALTER DATABASE UrDb SET ENABLE_BROKER

并且还在数据库http://screencast.com/t/vrOjJbA1y中创建了一个服务和一个队列,但我从未通过我的Windows应用程序收到通知.
此外,当我在sql server中打开队列时,它总是空的http://screencast.com/t/05UPDIwC8ck 接缝有错误,但我不知道.

c# sql-server entity-framework .net-4.5

12
推荐指数
1
解决办法
1万
查看次数

我们什么时候需要SQL Server中的CLR功能?

我想知道什么时候需要在SQL Server中使用CLR功能.

有人说CLR主要用于完成T-SQL无法完成的任务.但我无法弄清楚T-SQL的一个很好的例子未能给我我的确切输出.

有人可以给我一个通过T-SQL无法实现的确切示例吗?

样品将非常感谢!

sql sql-server sqlclr sql-server-2012

0
推荐指数
1
解决办法
3592
查看次数