KB2519358 - ИСПРАВЛЕНО: ошибка "The integer value is out of range" при передаче значения bigint в качестве аргумента last_sync_version функции CHANGETABLE в SQL Server 2008 или SQL Server 2008 R2

Применяется к
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Service Pack 2 SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express

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

Проблема

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

  • Вы включаете отслеживание изменений в таблице в SQL Server 2008 или SQL Server 2008 R2.

  • Запрос, в котором используется функция CHANGETABLE вместе с аргументом last_sync_version, возвращает сведения об отслеживании изменений, внесенных в таблицу.

  • В качестве аргумента last_sync_version передается значение bigint.

Например, после включения функции отслеживания изменений в таблице можно выполнить следующий запрос:

SELECT * FROM CHANGETABLE(changes dbo.t1, 2222222222) as ct

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

Примечание

MSG 1080, уровень 15, состояние 1, строка 1
Целое значение, значение bigint находится вне допустимого диапазона.

Заметки

  • Тип аргумента last_sync_version определяется как bigint. Поэтому ожидается успешное выполнение запроса.
  • Значение bigint — это заполнитель, представляющий значение bigint, передаваемое в качестве аргумента last_sync_version.

Решение

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

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

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

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

2567616 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2 с пакетом обновления 1

SQL Server 2008 с пакетом обновления 2 (SP2)

Исправление для этой проблемы было впервые выпущено в накопительном пакете обновления 4 для SQL Server 2008 с пакетом обновления 2 (SP2). Дополнительные сведения об этом накопительном пакете обновления см. в следующей статье базы знаний Майкрософт:

2527180 Накопительный пакет обновления 4 для SQL Server 2008 с пакетом обновления 2 (SP2) Так как сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, которые вошли в предыдущий выпуск исправления SQL Server 2008 г. Корпорация Майкрософт рекомендует рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:

2402659 Сборки SQL Server 2008 г., выпущенные после выпуска SQL Server 2008 с пакетом обновления 2 (SP2) Исправления для Microsoft SQL Server 2008 предназначены для определенных пакетов обновления для SQL Server. Необходимо применить исправление SQL Server 2008 с пакетом обновления 2 (SP2) для установки SQL Server 2008 с пакетом обновления 2. По умолчанию все исправления, предоставляемые в пакете обновления для SQL Server, входят в следующий пакет обновления для SQL Server.

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
Исправление для этой проблемы впервые выпущено в накопительном пакете обновления 13. Для получения дополнительной информации о том, как получить этот накопительный пакет обновления для SQL Server 2008 SP1, откройте статью со следующим номером в базе знаний Майкрософт:

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

970365 Сборки SQL Server 2008 г., выпущенные после выпуска SQL Server 2008 с пакетом обновления 1 (SP1)

Состояние

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

Временное решение

Чтобы обойти эту проблему, создайте переменную типа bigint, а затем передайте переменную в качестве last_sync_version аргумента функции CHANGETABLE. Например, вы можете успешно выполнить следующий запрос:

DECLARE @v3 bigint = 2222222222
SELECT * FROM CHANGETABLE(changes dbo.t1, @v3 ) as ct

Дополнительные сведения

Дополнительные сведения о функции CHANGETABLE для Transact-SQL см. на следующем веб-сайте Microsoft Development Network (MSDN):

Общие сведения о функции CHANGETABLE для Transact-SQL