Alachisoft Ncache SqlCacheDependency добавление зависимости через хранимую процедуру - PullRequest
0 голосов
/ 19 февраля 2019

Мы пытаемся реализовать SqlCacheDependency и, добавляя зависимость через хранимую процедуру, удаляем объект сразу после добавления его в кэш. Это дает CacheItemRemovedReason как 4.

Мы использовали образец синхронизации базы данных, представленный в упомянутомссылка ниже.

http://www.alachisoft.com/resources/samples/

string storedProcName = "dbo.TestStoredProc1";

SqlCmdParams sqlParams = new SqlCmdParams();
sqlParams.Value = prod.ProductID;
//sqlParams.
Dictionary<string, SqlCmdParams> prms = new Dictionary<string, SqlCmdParams>();
prms.Add("ID", sqlParams);
_cache.Add(prod.ProductID.ToString(), item,DSWriteOption.None,null);

item.Dependency = new SqlCacheDependency (connString, "select * from dbo.state_lookup где state_id =" + prod.ProductID.ToString ());

Database Synchronizationpublic void OnCacheDataModification(string key, CacheEventArg args)
    {
        switch (args.EventType)
        {
            case EventType.ItemAdded:
                // Key has been added to the cache
                Console.WriteLine(key + " Item Added");
                break;

            case EventType.ItemUpdated:
                Console.WriteLine(key + " Item Updated");
                break;

            case EventType.ItemRemoved:
                break;
        }

Я добавил слушателя изменения элемента, и он сразу переходит в раздел ItemRemoved после перехода в деталь ItemAdded. Обратный вызов удаленного элемента должен вызываться только при изменении данных в базе данных.

Версия SQL Server: Microsoft SQL Server 2008 R2 (SP2)

Alachisoft Edition: пробная версия Enterprise

Версия Alachisoft SDK: 4.9.1.1

1 Ответ

0 голосов
/ 27 февраля 2019

Есть несколько вещей, на которые нужно обратить внимание при работе с NCache SQLDependency, и я перечислил их ниже.

• NCache SQLDependency использует службу SQL Broker для аннулирования и удаления элементов из кэша на основеуведомления.Убедитесь, что вы включили службу брокера для своей базы данных, чтобы NCache SQLDependency мог работать без проблем, как указано в следующих шагах.

• Кроме того, обратите внимание, что SQLDependency имеет несколько ограничений на операторы, которые поддерживаются при создании запроса для SQLDependency.Это ограничение также наследуется функцией SQLDependency NCache, поскольку NCache зависит от брокера SQL.Одним из основных ограничений является оператор SELECT, который заключается в том, что «оператор не может использовать звездочку () или имя_таблицы. синтаксис для указания столбцов.».Ваш запрос SQLDependency должен соответствовать всем правилам и требованиям, которые были упомянуты Microsoft.

• Полный список требований для создания запроса на уведомление на SQL Server можно найти на следующем сайте MSDN: https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms181122(v=sql.105)

• Кроме того, обратите внимание, что всякий раз, когда NCache SQLDependency не удаетсяПосле регистрации соответствующий элемент (для которого была добавлена ​​зависимость) мгновенно удаляется, и в журналах сервера регистрируется сообщение об ошибке.Пожалуйста, просмотрите журналы вашего сервера, и вы должны увидеть запись об ошибке, в которой говорится, что SQL Broker не удалось установить SQLDependency из-за неверного запроса SQL.

После того как вы рассмотрели все вышеупомянутые элементы, ваша SQLDependency должна работать без сбоев.

...