在其他人的代码上工作,他们已经建立了 SQL 依赖事件 (SQL 2008)。不是我非常熟悉的东西,所以只是做一些阅读和一些测试。
该事件称为 CustomerServicesTable_OnChange,因此可能意味着在 customerServices 表更改时触发。但是,当通过代码更改数据库时(我们使用的是实体框架),事件不会触发。
出于好奇,我启动了 SQL Server 管理器并尝试直接对表运行查询以查看会发生什么。对表运行 UPDATE、INSERT 或 ALTER 查询不会导致事件触发。
为了检查是否启用了 SQL 依赖项,我随后对数据库运行了以下命令,这应该是启用服务的第一步:
ALTER DATABASE customers SET SINGLE_USER with rollback immediate
alter database customers set enable_broker
ALTER DATABASE customers SET MULTI_USER
令我惊讶的是,运行这些命令导致事件触发!
因此,看起来该依赖项对整个数据库或数据库中的表(而不是 CustomerServices)起作用。任何人都可以提出一种方法来帮助我确定问题所在吗?
编辑:我发现导致事件触发的不是 ALTER DATABASE 命令,而是 SET SINGLE_USER 导致错误的事实。虽然对我的问题没有多大帮助。
干杯,马特