KB2518808-FIX: "выражение: (pCopySrc-Command) <= (int) cmdLength" Error (ошибка) при добавлении столбца в таблицу, опубликованную в публикации транзакций в SQL Server 2008 R2

Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 R2 как один файл для загрузки. Поскольку исправления являются кумулятивными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2.

Проблемы

Рассмотрим следующий сценарий.

  • Вы создаете публикацию транзакций в SQL Server 2008 R2.

  • Вы добавляете в публикацию таблицу в качестве статьи.

  • Вы инициализирует публикацию транзакций и создаете исходный моментальный снимок.

  • Вы пытаетесь выполнить запрос, чтобы добавить в таблицу новый столбец. Например, вы пытаетесь выполнить следующий запрос, чтобы добавить столбец <имя столбца> в таблицу <имя таблицы> .

    Alter table <table name> add <column name> int null

В этом случае запрос не выполняется, и появляется сообщение об ошибке, подобное следующему:

Расположение: replschema. cpp: 1305Expression: (pCopySrc-Command) <= (int) cmdLengthSPID: <SPID>идентификатор процесса: <ID процесса>

Сообщение 4902, уровень 16, состояние 1, строка 2Cannot найти объект <имя таблицы> , так как оно не существует или у вас нет разрешений. При возникновении этой проблемы в файле журнала ошибок SQL Server регистрируется следующее сообщение об ошибке.

Кроме того, вы можете столкнуться со следующими небольшими ошибками:

Сообщение 3624, уровень 20, состояние 1, процедура sp_replflush, проверка утверждения системы для строки 1A завершилась сбоем. Подробности см. в журнале ошибок SQL Server. Как правило, сбой утверждения вызывается из-за ошибки программного обеспечения или повреждения данных. Чтобы проверить, не повреждена ли база данных, попробуйте выполнить команду DBCC CHECKDB. Если вы согласились отправлять дампы в Microsoft во время установки, мини-дамп будет отправлен в корпорацию Майкрософт. Обновление может быть доступно в Microsoft в новейшем пакете обновления или в QFE от службы технической поддержки.

Кроме того, в журнале ошибок регистрируются следующие записи:

2011-03-25 08:56:14.71 spid55 ошибка: 17066; уровень серьезности: 16; состояние: 1.2011-03-25 08:56:14.71 spid55 SQL Server assertion: file: <replschema. cpp>, Line = 1305 Failed assertion = ' (pCopySrc-Command) <= () cmdLength ". Эта ошибка может быть связана со временем. Если после повторного выполнения инструкции ошибка повторится, используйте DBCC CHECKDB, чтобы проверить базу данных на наличие структурной целостности, или перезапустите сервер, чтобы убедиться в том, что структуры данных в памяти не повреждены. 2011-03-25 08:56:14.92 spid55 Error: 3624, Severity: spid55, State: 1.2011-03-25 08:56:14.92. Подробности см. в журнале ошибок SQL Server. Как правило, сбой утверждения вызывается из-за ошибки программного обеспечения или повреждения данных. Чтобы проверить, не повреждена ли база данных, попробуйте выполнить команду DBCC CHECKDB. Если вы согласились отправлять дампы в Microsoft во время установки, мини-дамп будет отправлен в корпорацию Майкрософт. Обновление может быть доступно в Microsoft в новейшем пакете обновления или в QFE от службы технической поддержки.

Решение

Сведения о накопительном пакете обновления

SQL Server 2008 R2 с пакетом обновления 1 (SP1)

Исправление для этой проблемы впервые выпущено в накопительном обновлении 1 для SQL Server 2008 R2 с пакетом обновления 1 (SP1). Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления, щелкните следующий номер статьи базы знаний Майкрософт:

2544793 Накопительный пакет обновления 1 для SQL Server 2008 R2 с пакетом обновления 1 (SP1)Примечание. Поскольку сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

2567616 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2 с пакетом обновления 1 (SP1) SQL server 2008 R2 Исправление для этой проблемы впервые выпущено в накопительном обновлении 7. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, щелкните следующий номер статьи базы знаний Майкрософт:

2507770 Накопительный пакет обновления 7 для SQL Server 2008 R2 Примечание. Поскольку сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2

Обходное решение

Чтобы устранить эту ошибку, измените имя таблицы так, чтобы оно содержало менее 8 символов.

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Спасибо за ваш отзыв!

×