2013-06-25 79 views
3

我目前正在使用Microsoft SQL Server 2008.不使用'SqlDependency'类监视数据库更改

我的生产服务器负载很重。

我的C#应用​​程序使用'SqlDependency'类来监视某些表更改。

在开发环境 - 应用程序工作正常,并且来自SQL服务器的更改事件被正确触发。

在生产环境 - 即使没有任何变化,应用程序也会获得更改事件。我已经读过'SqlDependency'在重负载下表现不佳。

我正在寻找其他解决方案来解决这种情况,有什么建议吗?

回答

2

如果您在没有更改时收到通知,则表示其他事件触发了通知。您必须始终检查您的OnChange处理程序上收到的参数SqlNotificationEventArgs,并根据Info,SourceType进行适当反应。在生产中,您很可能会收到像Info.Options这样的通知,表示不正确的SET选项(即特定于环境的问题)。

至于关于SqlDependency负载下的评论,您必须链接源代码。但总体上查询通知是为缓存失效而设计的,其数据变化不大很少

+0

我可以设置事件只会在发生一些“SqlNotification”条件时触发吗? 例如:当类型为'订阅'且来源为'声明'时,事件将启动 – ohadinho

+1

事件因为您的设置不正确而触发。你不能通过简单地声明“我想忽略我的问题,让它神奇地工作”来解决你的问题。 **解决事件**报告的问题。 –

+0

说错误的设置是什么意思? 例如:我得到SqlNotificationInfo的“无效”。 如何检查问题出在哪里,或告诉SQL在获取时不要提出事件? – ohadinho