KB2384766 - ИСПРАВЛЕНО: свойство ANSI_NULLS индексированного представления изменяется на FALSE после того, как индексированное представление реплицируется в базу данных подписки в SQL Server 2008 или в SQL Server 2008 R2

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

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

Проблема

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

  • Публикация транзакции создается в Microsoft SQL Server 2008 или Microsoft SQL Server 2008 R2.

  • У вас есть индексированное представление. Для свойства ANSI_NULLS представления индекса задано значение ИСТИНА.

  • Индексированное представление добавляется к публикации в виде статьи. Вы устанавливаете тип статьи "индексированное представление на основе журнала".

    Примечание. Для указания типа индексированного представления можно использовать следующий код. Это следует сделать при запуске хранимой процедуры sp_addarticle для добавления индексированной статьи представления в публикацию.

    @type = N'indexed view logbased'
    
    
  • Создается подписка на публикацию транзакции.

  • Индексированное представление реплицируется в базу данных подписки.

В этом сценарии свойство ANSI_NULLS индексированного представления изменяется на FALSE в базе данных подписки.

Заметки

  • Эта проблема обычно возникает, когда свойство ANSI_NULLS таблиц, которые участвуют в структуре выражений SQL представления индекса, имеет значение FALSE.
  • Эта проблема также существует в Microsoft SQL Server 2005.

      

Причина

Эта проблема возникает из-за того, что таблицы, представления, функции и хранимые процедуры в SQL Server 2008 используют один и тот же бит хранилища для свойства ANSI_NULL. Следовательно, если свойство ANSI_NULLS одной из таблиц, входящих в структуру выражений SQL индексированного представления, имеет значение FALSE, свойство ANSI_NULLS по умолчанию для индексированного представления будет равно FALSE.

Решение

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

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

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

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

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

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

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

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

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

SQL Server 2008 R2

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

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

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

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

Чтобы обойти эту проблему, обновите кэш метаданных после создания индексированного представления и до запуска sp_addarticle, чтобы добавить статью индексированного представления.

Примечания Чтобы обновить кэш метаданных, используйте один из следующих методов.

  • Остановите службу SQL Server, а затем запустите ее.
  • Настройте базу данных подписки на автономный режим, а затем — на подключение к сети.

      

Состояние

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

Ссылки

Дополнительные сведения о хранимой процедуре sp_addarticle см. на следующем веб-сайте корпорации Майкрософт:

Введение в хранимую процедуру sp_addarticle (Transact-SQL) Дополнительные сведения об объектах базы данных и публикации см. на следующем веб-сайте корпорации Майкрософт:

Публикация данных и объектов базы данных Дополнительные сведения о модели добавочного обслуживания для SQL Server см. в следующей статье базы знаний Майкрософт:

935897 Команда SQL Server предоставляет модель добавочного обслуживания для предоставления исправлений для обнаруженных проблем

Дополнительные сведения о схеме именования для обновлений SQL Server см. в следующей статье базы знаний Майкрософт:

822499 Новая схема именования пакетов обновления программного обеспечения Microsoft SQL Server Дополнительные сведения о терминологии обновления программного обеспечения см. в следующей статье базы знаний Майкрософт:

824684 Стандартные термины, используемые при описании обновлений программного обеспечения Майкрософт