KB2451540 - 2451540 - ИСПРАВЛЕНО: Снижение производительности может наблюдаться при выполнении запроса, содержащего несколько операций самосоединения к одному и тому же столбцу в SQL Server 2005, SQL Server 2008 и SQL Server 2008 R2

Применяется к
Microsoft SQL Server 2005 Workgroup Edition Microsoft SQL Server 2005 Evaluation Edition Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Express Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Developer Edition SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Standard SQL Server 2008 Workgroup SQL Server 2008 R2 Developer SQL Server 2008 R2 Express SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup Microsoft SQL Server 2005 Service Pack 4 Microsoft SQL Server 2005 Service Pack 3

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

Проблема

Рассмотрим следующий сценарий. У вас есть база данных в Microsoft SQL Server 2005, Microsoft SQL Server 2008 или Microsoft SQL Server 2008 R2. Запрос, содержащий несколько операций самосоединения в одном столбце таблицы базы данных, выполняется вручную. Например, при попытке создать куб, использующий данные из базы данных, может быть выполнен запрос, содержащий несколько операций самостоятельного соединения с одним и тем же столбцом. В этом случае может возникнуть снижение производительности и выполнение запроса.

Причина

Эта проблема возникает из-за неверной оценки кратности в запросе. После рассмотрения нескольких операций самостоятельного соединения оптимизатор запросов может оценить количество строк для другого оператора соединения равным 1. Поэтому оптимизатор запросов выбирает неэффективный план запросов, что приводит к снижению производительности.

Решение

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

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

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

2498535 Накопительный пакет обновления 3 для 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

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

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

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

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

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

2467236 Накопительный пакет обновления 12 для 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.

После установки этого накопительного пакета обновления необходимо включить traceflag 4199. Для этого можно добавить параметр запуска -T4199 или использовать оператор dbcc traceon(4199) для отдельного сеанса.

SQL Server 2005 с пакетом обновления 3 (SP3)

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

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

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

После установки этого накопительного пакета обновления необходимо включить traceflag 4199. Для этого можно добавить параметр запуска -T4199 или использовать оператор dbcc traceon(4199) для отдельного сеанса.

SQL Server 2005 с пакетом обновления 4 (SP4)

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

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

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

Состояние

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

Ссылки

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

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

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

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