В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Исправление: UNION параметризованного запроса внутри хранимая процедура возвращает неверные результаты

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:822033
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Проблема
При выполнении хранимой процедуры на многопроцессорных компьютерах, хранимая процедура может вернуть неправильное количество строк или неверные результаты при соблюдении следующих условий:
  • Хранимая процедура имеет запрос, который выполняется в параллельном режиме.
  • Запрос создает производные таблицы и таблицы является результатом операции UNION ALL или UNION.
  • Хотя бы одну ветвь UNION запроса использует значение параметра, передаваемых в процедуру как константное выражение в списке SELECT.
  • Производную таблицу, созданный запрос UNION соединена с другой таблицей с помощью столбца, который возвращает одно из значений констант параметров, передаваемых в процедуру.
  • Запрос использует стратегию соединения хэша, зависит от того, секционирование по столбцам объединения.

Этот запрос приведен пример синтаксиса, которые могут вызвать поведение возникает.
create procedure example_proc @P1 intasselect * from 				    ( select @P1 as x, ColB as y from T1          union all          select ColA as x, ColB as y from T2        ) as DerivedT Join T3     on DerivedT.x = T3.ColAgo
Решение

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

Чтобы решить эту проблему, получите последний пакет обновления для Microsoft SQL Server 2000. Дополнительные сведения см. в следующей статье базы знаний Майкрософт::
290211Как получить последний пакет обновления для SQL Server 2000

Сведения об исправлении

Английская версия исправления содержит версии файлов, приведенные в следующей таблице (или более поздние).. Дата и время для файлов указаны во всеобщем скоординированном времени (UTC).. При просмотре сведений о файле, время изменяется на местное.. Чтобы узнать разницу между временем по Гринвичу и местным временем,Часовой поясвкладки в окне «Дата и время» панели управления.
   Date         Time   Version         Size             File name   ---------------------------------------------------------------------------   31-May-2003  18:45  2000.80.818.0      78,400 bytes  Console.exe         25-Jun-2003  01:01  2000.80.818.0      33,340 bytes  Dbmslpcn.dll        25-Apr-2003  02:12                    786,432 bytes  Distmdl.ldf   25-Apr-2003  02:12                  2,359,296 bytes  Distmdl.mdf   30-Jan-2003  01:55                        180 bytes  Drop_repl_hotfix.sql   23-Jun-2003  22:40  2000.80.837.0   1,557,052 bytes  Dtsui.dll           23-Jun-2003  22:40  2000.80.837.0     639,552 bytes  Dtswiz.dll          24-Apr-2003  02:51                    747,927 bytes  Instdist.sql   03-May-2003  01:56                      1,581 bytes  Inst_repl_hotfix.sql   08-Feb-2003  06:40  2000.80.765.0      90,692 bytes  Msgprox.dll         01-Apr-2003  02:07                      1,873 bytes  Odsole.sql   05-Apr-2003  01:46  2000.80.800.0      62,024 bytes  Odsole70.dll        07-May-2003  20:41  2000.80.819.0      25,144 bytes  Opends60.dll       02-Apr-2003  21:48  2000.80.796.0      57,904 bytes  Osql.exe            02-Apr-2003  23:15  2000.80.797.0     279,104 bytes  Pfutil80.dll        22-May-2003  22:57                     19,195 bytes  Qfe469571.sql   11-Jul-2003  17:04                  1,084,147 bytes  Replmerg.sql    04-Apr-2003  21:53  2000.80.798.0     221,768 bytes  Replprov.dll        08-Feb-2003  06:40  2000.80.765.0     307,784 bytes  Replrec.dll         11-Jul-2003  16:56                  1,085,925 bytes  Replsys.sql   01-Jun-2003  01:01  2000.80.818.0     492,096 bytes  Semobj.dll          31-May-2003  18:27  2000.80.818.0     172,032 bytes  Semobj.rll   29-May-2003  00:29                    115,944 bytes  Sp3_serv_uni.sql   01-Jun-2003  01:01  2000.80.818.0   4,215,360 bytes  Sqldmo.dll          07-Apr-2003  17:44                     25,172 bytes  Sqldumper.exe       19-Mar-2003  18:20  2000.80.789.0      28,672 bytes  Sqlevn70.rll   02-Jul-2003  00:18  2000.80.834.0     180,736 bytes  Sqlmap70.dll        08-Feb-2003  06:40  2000.80.765.0      57,920 bytes  Sqlrepss.dll       10-Jul-2003  22:00  2000.80.840.0   7,553,105 bytes  Sqlservr.exe       08-Feb-2003  06:40  2000.80.765.0      45,644 bytes  Sqlvdi.dll         25-Jun-2003  01:01  2000.80.818.0      33,340 bytes  Ssmslpcn.dll        01-Jun-2003  01:01  2000.80.818.0      82,492 bytes  Ssnetlib.dll        01-Jun-2003  01:01  2000.80.818.0      25,148 bytes  Ssnmpn70.dll        01-Jun-2003  01:01  2000.80.818.0     158,240 bytes  Svrnetcn.dll        31-May-2003  18:59  2000.80.818.0      76,416 bytes  Svrnetcn.exe        30-Apr-2003  23:52  2000.80.816.0      45,132 bytes  Ums.dll             02-Jul-2003  00:19  2000.80.834.0      98,816 bytes  Xpweb70.dll      				
Примечание.Из-за зависимостей между файлами последние исправления или функция, которая содержит файлы могут содержать дополнительные файлы.

Временное решение
Для временного решения проблемы используйте любой из следующих способов:
  • Отключите запрос параллелизма для запроса, добавив в запрос подсказку OPTION (MAXDOP 1). Это будет создавать тот же результат, как исправить ошибку. Исправление ошибок обнаруживает ли параметр MAXDOP присвоено значение 1 и автоматически отключает параллелизма для этого типа запроса.
  • Сохранение параметров хранимой процедуры в локальные переменные и передавать ее локальных переменных в запросе в качестве параметров.
  • Принудительно стратегии другого соединения, например цикла соединения или соединения слиянием.
Статус
Корпорация Майкрософт подтверждает, что это проблема в продуктах Майкрософт, перечисленных в разделе «Применяется к»..Впервые эта проблема была исправлена в SQL Server 2000 с пакетом обновления 4.
Дополнительная информация
Дополнительные сведения см. в следующей статье базы знаний Майкрософт::
824684Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 822033 — последний просмотр: 02/21/2014 00:46:27 — редакция: 2.0

Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Workgroup Edition

  • kbnosurvey kbarchive kbqfe kbquery kbstoredproc kbsqlserv2000presp4fix kbfix kbbug kbmt KB822033 KbMtru
Отзывы и предложения