Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 и Microsoft SQL Server 2008 R2 в виде одного загружаемого файла. Поскольку исправления являются накопительными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправлений SQL Server 2008 или SQL Server 2008 R2.
Проблема
Рассмотрим следующий сценарий.
Вы создаете таблицу, содержащую недетерминированный вычисляемый столбец в базе данных SQL Server 2008 или SQL Server 2008 R2. Например, чтобы создать таблицу, содержащую недетерминированный вычисляемый столбец, выполните следующую инструкцию: CREATE TABLE [dbo]. [Т1](
[ДатаРождения] ДАТА,
[Возраст] AS (FLOOR(DATEDIFF(DAY,[DateOfBirth],GETDATE())/(365.0))))GO Примечание В этом операторе функция GETDATE является недетерминированной.Хранимая процедура sp_createstats выполняется для повышения производительности.
Примечание. Хранимая процедура sp_createstats создает статистику с одним столбцом для всех подходящих столбцов базы данных
В этом случае хранимая процедура sp_createstats завершается сбоем. Поэтому статистика для некоторых подходящих столбцов могла не быть создана. Кроме того, появляется следующее сообщение об ошибке:
Примечание
MSG 2729, уровень 16, состояние 1, строка 1
Столбец "Возраст" в таблице "dbo.t1" нельзя использовать в индексе, статистике или в качестве ключа секции, так как он не детерминирован.
Причина
Эта проблема возникает из-за того, что хранимая процедура sp_createstats не пропускает недетерминированные вычисляемые столбцы.
Решение
Сведения о накопительном пакете обновления
SQL Server 2008 с пакетом обновления 1 (SP1)
Исправление для этой проблемы было впервые выпущено в накопительном пакете обновления 11 для SQL Server 2008 с пакетом обновления 1. Дополнительные сведения об этом накопительном пакете обновления см. в следующей статье базы знаний Майкрософт:
2413738 Накопительный пакет обновления 11 для SQL Server 2008 с пакетом обновления 1 (SP1)
Примечание. Поскольку сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008. Корпорация Майкрософт рекомендует рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:
970365 Сборки SQL Server 2008, выпущенные после выпуска пакета обновления 1 для SQL Server 2008. Исправления Microsoft SQL Server 2008 предназначены для определенных пакетов обновления SQL Server. Необходимо применить исправление пакета обновления 1 для 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, выпущенные после выпуска пакета обновления 2 (SP2) для SQL Server 2008.
SQL Server 2008 с пакетом обновления 2 (SP2)
Исправление для этой проблемы впервые было выпущено в накопительном пакете обновления 2 для SQL Server 2008 с пакетом обновления 2. Дополнительные сведения об этом накопительном пакете обновления см. в следующей статье базы знаний Майкрософт:
2467239 Накопительный пакет обновления 2 для SQL Server 2008 с пакетом обновления 2 (SP2). Так как сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, которые входили в состав предыдущего выпуска исправления для SQL Server 2008. Корпорация Майкрософт рекомендует рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:
2402659 сборках SQL Server 2008, выпущенных после выпуска пакета обновления 2 (SP2) для SQL Server 2008, созданы исправления для определенных пакетов обновления SQL Server. Установите исправление пакета обновления 2 для SQL Server 2008 с пакетом обновления 2 (SP2) для установки SQL Server 2008 с пакетом обновления 2. По умолчанию все исправления, предоставляемые в пакете обновления для SQL Server, входят в следующий пакет обновления для SQL Server.
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
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Ссылки
Дополнительные сведения о детерминированных и недетерминированных функциях см. на следующем веб-сайте сети Microsoft Developer Network (MSDN):
Общие сведения о детерминированных и недетерминированных функциях Дополнительные сведения о хранимой процедуре sp_createstats см. на следующем веб-сайте MSDN:
Общие сведения о хранимой процедуре Transact-SQL "sp_createstats" Дополнительные сведения о вычисляемых столбцах см. на следующем веб-сайте MSDN:
Общие сведения о вычисляемых столбцах Дополнительные сведения о модели добавочного обслуживания для SQL Server см. в следующей статье базы знаний Майкрософт:
935897 Команда SQL Server предоставляет модель добавочного обслуживания для предоставления исправлений для обнаруженных проблем
Дополнительные сведения о схеме именования для обновлений SQL Server см. в следующей статье базы знаний Майкрософт:
822499 Новая схема именования пакетов обновления программного обеспечения Microsoft SQL ServerДополнительные сведения о терминологии обновления программного обеспечения см. в следующей статье базы знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программного обеспечения Майкрософт