У меня проблема, я пытаюсь настроить уведомления SqlDependency для получения уведомлений об изменении данных в таблице на sql sever. Однако, как только я выполняю запрос, который я использую для настройки sql-зависимости, сразу же приходит уведомление о том, что попытка подписки не удалась из-за проблемы с sql-заявлением (SqlNotificationEventArgs показывает 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 профайлера, которого у меня сейчас нет).