Применяется к
SQL Server 2008 R2 Service Pack 2 SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Developer SQL Server 2008 R2 Standard SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 R2 Express SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core

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

Проблемы

При выполнении запроса в Microsoft SQL Server 2008 R2 SP2 или в Microsoft SQL Server 2012 могут возблюдаться неверные результаты, если выполняются указанные ниже условия.

  • Запрос использует предложение перекрестного применения для результата полного предложения Join .

  • Данные таблицы обеспечиваются вызовом пользовательской функции, возвращающей табличное значение, в предложении Full 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.

Решение

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

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

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

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

2692828 Сборки SQL Server 2012, выпущенные после выпуска SQL Server 2012

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

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

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

2772858 Сборки SQL Server 2012, выпущенные после выпуска пакета обновления 1 (SP1) для SQL Server 2012

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

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

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

2730301 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2 с пакетом обновления 2 (SP2)

Статус

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

Обходное решение

Для решения этой проблемы используйте инструкцию полного соединения слиянием вместо полного предложения 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 

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

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

Общие сведения об использовании предложения перекрестного применения

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.