Корпорация Майкрософт распространяет исправления 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 представления индекса задано значение "истина".
-
Вы добавляете индексированное представление в публикацию как статью. Вы установили для типа статьи значение "индексированное представление logbased". Примечание Вы можете использовать следующий код, чтобы задать тип индексированного представления. Сделайте это при запуске хранимой процедуры sp_addarticle, чтобы добавить в публикацию статью индексированного представления.
@type = N'indexed view logbased'
-
Вы создаете подписку на публикацию транзакций.
-
Индексированное представление реплицируется в базу данных подписки.
В этом случае свойство ANSI_NULLS индексированного представления изменяется на false в базе данных подписки.Примечания.
-
Как правило, эта проблема возникает, если свойство ANSI_NULLS таблиц, участвующих в структуре SQL Expression представления index, имеет значение false.
-
Эта проблема также существует в Microsoft SQL Server 2005.
Причина
Эта проблема возникает из-за того, что таблицы, представления, функции и хранимые процедуры в SQL Server 2008 имеют один и тот же бит хранилища для свойства ANSI_NULL . Таким образом, если свойство ANSI_NULLS одной из таблиц, участвующих в структуре выражений SQL индексированного представления, имеет значение false, для индексированного представления ANSI_NULLS по умолчанию будет задано значение false.
Решение
Сведения о накопительном пакете обновления
SQL Server 2008 с пакетом обновления 1
Исправление для этой проблемы впервые выпущено в накопительном обновлении 10 для SQL Server 2008 с пакетом обновления 1 (SP1). Чтобы получить дополнительные сведения об этом накопительном пакете обновления, щелкните следующий номер статьи базы знаний Майкрософт:
2279604 Накопительный пакет обновления 10 для SQL Server 2008 с пакетом обновления 1 (SP1)Примечание. Так как сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008. Корпорация Microsoft рекомендует установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
970365 Сборки SQL Server 2008, выпущенные после выпуска пакета обновления 1 (SP1) для SQL Server 2008 Исправления Microsoft SQL Server 2008 создаются для конкретных пакетов обновления для SQL Server. Вы должны применить исправление для SQL Server 2008 с пакетом обновления 1 (SP1) к установке SQL Server 2008 с пакетом обновления 1. По умолчанию любое исправление, предоставленное в пакете обновления SQL Server, входит в следующий пакет обновления для SQL Server.
SQL Server 2008 с пакетом обновления 2
Исправление для этой проблемы впервые выпущено в накопительном обновлении 1 для SQL Server 2008 с пакетом обновления 2. Чтобы получить дополнительные сведения об этом накопительном пакете обновления, щелкните следующий номер статьи базы знаний Майкрософт:
2289254 Накопительное обновление 1 для SQL Server 2008 с пакетом обновления 2Примечание. Так как сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
2402659 Сборки SQL Server 2008, выпущенные после выпуска пакета обновления 2 (SP2) для SQL Server 2008
SQL Server 2008 R2
Исправление для этой проблемы впервые выпущено в накопительном обновлении 4. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, щелкните следующий номер статьи базы знаний Майкрософт:
2345451 Накопительный пакет обновления 4 для SQL Server 2008 R2 Примечание. Поскольку сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2
Обходное решение
Для устранения этой проблемы обновите кэш метаданных после создания индексированного представления и перед выполнением sp_addarticle, чтобы добавить статью индексированного представления.Примечания. Чтобы обновить кэш метаданных, воспользуйтесь одним из указанных ниже способов.
-
Остановите службу SQL Server и запустите ее.
-
Установите для базы данных подписки значение не в сети, а затем установите для нее значение Online (база данных).
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Дополнительные сведения о sp_addarticle хранимой процедуры можно найти на веб-сайте корпорации Майкрософт по следующему адресу:
Общие сведения о хранимой процедуре sp_addarticle (Transact-SQL)Дополнительные сведения о публикации данных и объектах базы данных можно найти на веб-сайте корпорации Майкрософт по следующему адресу:
Публикация данных и объектов базы данныхЧтобы получить дополнительные сведения о модели добавочного обслуживания для SQL Server, щелкните следующий номер статьи базы знаний Майкрософт:
935897 Модель обслуживания изменений, используемая рабочей группой SQL Server, предоставляет модель ISM для распространения исправлений обнаруженных проблемЧтобы получить дополнительные сведения о схеме присвоения имен обновлениям SQL Server, щелкните следующий номер статьи базы знаний Майкрософт:
822499Новая схема присвоения имен пакетам обновлений программного обеспечения Microsoft SQL ServerЧтобы получить дополнительные сведения о терминологии обновления программного обеспечения, щелкните следующий номер статьи базы знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт