专家的时间(等待@RemusRusanu和伙伴^^)
上下文
我构建了一个服务代理程序,主要基于SQLTeam的博客示例(http://www.sqlteam.com/article/centralized-asynchronous-auditing-with-service-broker)来模拟同一SQL Server实例上两个数据库之间的ETL行为。几个小时经历了经纪人,对话,禁用队列,中毒消息,激活问题等等的技巧后,我终于开始工作了。
问题
为了使其更具生产性,我只需要处理以下主题:
无需关闭对话,因为审核永远不会结束
在激活程序中。互联网充满了证据,不采取“一劳永逸”的行为。我在激活的程序结束时添加了一些END CONVERSATION,结果相同。大量使用过的对话。我知道重用对话框的好处(感谢@RemusRusanu),但我希望系统尽可能稳定,即避免耗尽可用的端点套接字。
=>我该怎么做呢?结束对话/不?有这种情况的生活时间吗?
;SEND ON CONVERSATION @dlgId MESSAGE TYPE [//Sync/Message] (@syncedData) END TRY BEGIN CATCH IF (XACT_STATE()) = -1 ROLLBACK; INSERT INTO SyncErrors(ErrorProcedure, ErrorLine, ErrorNumber, ErrorMessage, ErrorSeverity, ErrorState, SyncedData) SELECT ERROR_PROCEDURE(), ERROR_LINE(), ERROR_NUMBER(), ERROR_MESSAGE(), ERROR_SEVERITY(), ERROR_STATE(), @syncedData END CATCH
=>为什么在错误引发时它永远不会起作用?
=>这会提供我正在寻找的稳定性和稳健性吗?
=>这是正常的行为吗?有什么方法可以避免这种冗长,限制事件日志增长或配置轮换周期?
非常感谢你把我带到原力的阴暗面:)