ИСПРАВИТЬ: Неверные результаты при выполнении полного СОЕДИНЕНИЯ запроса использует предложение CROSS APPLY в SQL Server 2008 R2 или SQL Server 2012

Переводы статьи Переводы статьи
Код статьи: 2800797 - Vizualiza?i produsele pentru care se aplic? acest articol.
Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 R2 Пакет обновления 2 (SP2) в виде одного загружаемого файла. Так как исправления являются накопительными, каждый новый выпуск содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2008 R2 Пакет обновления 2 выпуска исправлений.
Развернуть все | Свернуть все

В этой статье

Проблема

Может появиться неверные результаты при выполнении запроса в Microsoft SQL Server 2008 R2 SP2 или 2012 Microsoft SQL Server, если выполняются следующие условия:
  • Запрос использует предложение CROSS APPLY над результатом предложения Полного СОЕДИНЕНИЯ .
  • Таблицы данных обеспечивается вызов возвращающих табличное значение пользовательской функции в предложении JOIN полный .
  • Функция принимает имя столбца в качестве параметра и возвращает результаты в виде таблицы.
Например при выполнении следующего запроса:
SELECT * FROM tablename 
CROSS APPLY (
    SELECT * FROM
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'New') s1 
    FULL JOIN 
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'Old') s2 
    ON s1.nodeName = s2.nodeName
    ) s 
Примечание Эта проблема возникает в Microsoft SQL Server 2012.

Решение

Накопительное обновление информации

Накопительное обновление для SQL Server 2012 7

Исправление этой уязвимости первого выпуска накопительного обновления 7. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2012 щелкните следующий номер статьи базы знаний Майкрософт:
2823247 Накопительный пакет обновления 7 для SQL Server 2012
Примечание Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и исправить все исправления, входившие в состав предыдущих 2012 SQL Server выпуска. Рекомендуется, чтобы учесть применение последний выпуск исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
2692828 Построения SQL Server 2012, выпущенные после выпуска SQL Server 2012

Накопительное обновление для пакета обновления 1 для SQL Server 2012 3

Исправление этой уязвимости впервые было выпущено в накопительном пакете обновления 3. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2012 1 (SP1) щелкните следующий номер статьи базы знаний Майкрософт:
2812412 Накопительный пакет обновления 3 для SQL Server 2012 Пакет обновления 1
Примечание Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и исправить все исправления, входившие в состав предыдущих SP1 2012 SQL Server выпуска. Рекомендуется, чтобы учесть применение последний выпуск исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
2772858 2012 SQL Server формирует, вышедшие после выпуска SQL Server 2012 Пакет обновления 1

5 Накопительное обновление для SQL Server 2008 R2 с пакетом обновления 2

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

Статус

Данное поведение является подтвержденной ошибкой продуктов Майкрософт, перечисленных в разделе «Информация в данной статье применима к:».

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

Чтобы обойти эту проблему, используйте предложение Полного СЛИЯНИЯ вместо полного предложения JOIN .

Например можно изменить запрос, описанное в разделе «Проблема» для следующего запроса вида:
SELECT * FROM tablename 
CROSS APPLY (
    SELECT * FROM
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'New') s1 
    FULL MERGE JOIN 
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'Old') s2 
    ON s1.nodeName = s2.nodeName
    ) s

Дополнительная информация

Дополнительные сведения о том, как использовать предложение CROSS APPLY , перейдите на следующий веб-узел Microsoft TechNet:
Общие сведения о том, как использовать предложение CROSS APPLY

Свойства

Код статьи: 2800797 - Последний отзыв: 15 апреля 2013 г. - Revision: 3.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2008 R2 Service Pack 2
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
Ключевые слова: 
kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2800797 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке: 2800797

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com