Проблемы
При попытке добавить поле в реплицированную таблицу в Microsoft Dynamics NAV 2009 с пакетом обновления 1 (SP1) или в Microsoft Dynamics NAV 5.0 с пакетом обновления 1 (SP1) вы получаете сообщение об ошибке, похожее на следующее:
При доступе к таблице Table_Name произошла следующая ошибка или ошибка SQL Server:
650,"42000",[Microsoft][Драйвер SQL Server SQL Server ODBC][SQL Server]Блокировку READPAST можно задать только в уровнях изоляции READ COMMITTED или REPEATABLE READ. SQL: ALTER TABLE "NAVDB". dbo". CRONUS International Ltd_$MyTable" ADD "field4" VARCHAR(10) NOT NULL CONSTRAINT "$ndodefault$625437302$4" DEFAULT ''
Примечания.
-
Table_Name — это место для фактического имени таблицы, с помощью которого вы хотите добавить поле.
-
Эта проблема возникает на компьютере с Microsoft SQL Server 2008 и установленной средой Microsoft Dynamics NAV. Кроме того, эта проблема возникает только в том случае, если репликация Microsoft SQL Server включена в одной из таблиц Microsoft Dynamics NAV.
Причина
Эта проблема возникает из-за того, что невозможно изменить схему реплицируемых таблиц в Microsoft SQL Server 2008, если для соответствующей транзакции установлен уровень изоляции SERIALIZABLE. Это новое ограничение для Microsoft SQL Server 2008, которое не существовало в более ранних версиях Microsoft SQL Server. Однако в конфигурации Microsoft Dynamics NAV по умолчанию для изменения таблиц используется уровень изоляции SERIALIZABLE.
Решение
Чтобы устранить эту проблему, настройте Microsoft Dynamics NAV 5.0 с SP1 и Microsoft Dynamics NAV 2009 с SP1 для использования уровня изоляции REPEATABLE READ в Microsoft SQL Server вместо уровня изоляции SERIALIZABLE.
Дополнительные сведения об изменении уровня изоляции, используемого в Microsoft Dynamics NAV, см. в следующих статьях базы знаний и связанных с ними префиксах: