Корпорация Майкрософт распространяет исправления 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 Стандартные термины, используемые при описании обновлений программного обеспечения Майкрософт