У меня возникла проблема, когда я пытаюсь настроить уведомления SqlDependency для получения уведомлений при изменении данных в таблице на сервере SQL Server. Однако, как только я выполняю запрос, который я использую для установки зависимости sql, сразу же приходит уведомление о том, что попытка подписки не удалась из-за проблемы с оператором sql (SqlNotificationEventArgs shows Info: Invalid, Source: Statement, Type: Subscribe
)
Это указывает на то, что существует проблема с запросом sql, но, попробовав очень простой пример, чтобы убедиться, что это не проблема с оператором select, я все еще получаю эти «недействительные» уведомления немедленно. Я также убедился, что я запустил брокер служб SQL Server, создал службу очередей и уведомлений и предоставил все необходимые разрешения для участника (в этом случае пользователь, с которым я подключаюсь к серверу sql)
Вот мой стол:
CREATE TABLE [dbo].[TableTest](
[id] [int] NOT NULL,
[val1] [int] NULL,
[val2] [int] NULL,
CONSTRAINT [PK_TableTest] PRIMARY KEY CLUSTERED ( [id] ASC )
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
вот код:
SqlDependency.Start(connectStr);
_connection = new SqlConnection(connectStr);
_connection.Open();
_sqlCommand = new SqlCommand("Select [id] from TableTest", _connection);
_sqlCommand.Notification = null;
SqlDependency dependency = new SqlDependency(_sqlCommand);
dependency.OnChange += this.OnDataChangeNotification;
DataTable dt = new DataTable();
dt.Load(_sqlCommand.ExecuteReader());
После вызова _sqlCommand.ExecuteReader () 'немедленно вызывается обработчик OnDataChangeNotification с параметром SqlNotificationEventArgs, показывающим Info: Invalid, Source: Statement, Type: Subscribe.
Кто-нибудь знает, в чем может быть проблема или как определить / отладить, что это такое (без использования профилировщика SQL, которого у меня нет atm).