FIX: Risultati non corretti con join della conversione al file binario di colonna

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 282243
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
BUG #: 351225 (SHILOH_bugs)
BUG #: 100900 (SQLBUG_70)
Sintomi
Quando si utilizza un confronto senza distinzione tra maiuscole e minuscole, se una subquery correlata o join viene eseguita una colonna basata su caratteri che è stata convertita in binary o varbinary , e se query optimizer sceglie un piano che utilizza una corrispondenza di spooling o hash tabella con cache, potrebbe essere restituiti risultati non corretti. Le righe restituite sono le corrispondenze basate su un confronto senza distinzione tra maiuscole e minuscole, della colonna, anziché un confronto binario.
Cause
Su un server senza distinzione tra maiuscole e minuscole, le ricerche dalla cache di spooling o hash tabella vengono eseguite in modo distinzione tra maiuscole e minuscole invece di una ricerca binaria. Poiché la colonna è stata eseguire il cast un tipo binario , deve essere eseguita una ricerca binaria.
Risoluzione

SQL Server 2000

Per risolvere il problema, ottenere il service pack più recente per Microsoft SQL Server 2000. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
290211INF: Come ottenere il Service Pack più recente per SQL Server 2000

SQL Server 7.0

Per risolvere il problema, ottenere il service pack più recente per Microsoft SQL Server 7.0. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
301511INF: Come ottenere il Service Pack più recente per SQL Server 7.0
Nota : è stata creata la seguente correzione rapida prima di SQL Server 7.0 Service Pack 4.

La versione inglese di questa correzione deve essere di avere i seguenti attributi di file o versioni successive:
   Version      File name      Platform   ----------------------------------------------------   7.00.0919    s70919i.exe    x86        SP2-based fix   7.00.0919    s70919a.exe    Alpha      SP2-based fix   7.00.0970    s70970i.exe    x86        SP3-based fix   7.00.0970    s70970a.exe    Alpha      SP3-based fix				
Nota : causa delle dipendenze fra i file, la funzionalità che contiene i file precedenti o l'aggiornamento rapido (hotfix) più recente può contenere anche file aggiuntivi.

Status
Microsoft ha confermato che questo problema riguarda i prodotti Microsoft elencati all'inizio di questo articolo.

SQL Server 2000
Il problema è stato risolto nel Service Pack 1 per SQL Server 2000.

SQL Server 7.0
Questo problema è stato innanzitutto corretto in SQL Server 7.0 Service Pack 4.
Informazioni
Lo script seguente viene illustrato il problema. Prima di applicare la correzione, lo script restituisce due righe con un TestCode "a", anziché una riga con valore "a" e un secondo, con valore "A".
CREATE TABLE #tblIDs(TestID int, Code varchar(1))CREATE TABLE #tblValues(Code varchar(1))INSERT INTO #tblIDs(TestID, Code) VALUES(1,'a')INSERT INTO #tblIDs(TestID, Code) VALUES(2,'A')INSERT INTO #tblValues(Code) VALUES('a')INSERT INTO #tblValues(Code) VALUES('A')SELECT #tblValues.Code AS TestCode,    (SELECT #tblIDs.TestID FROM #tblIDs       WHERE CAST(#tblIDs.Code AS varbinary) =             CAST(#tblValues.Code AS varbinary)    ) AS TestID FROM #tblValuesDROP TABLE #tblIDsDROP TABLE #tblValuesGO				
conversione di convertire ordine di ordinamento

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 282243 - Ultima revisione: 01/16/2015 21:19:20 - Revisione: 3.1

Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB282243 KbMtit
Feedback