Riepilogo
Si consideri lo scenario seguente:
-
Si utilizza una versione di Microsoft SQL Server Native Client precedenti a Microsoft SQL Server Native Client 11.0.
-
Il codice effettua una chiamata alla funzione SQLDescribeCol per una query di unione complessa che contiene i parametri e una clausola WHERE .
In questo scenario, SQLDescribeCol restituisce un tipo di lunghezza e i dati di colonna non corretto.
Causa
Questo problema si verifica perché il driver tronca la query per i metadati sulla parola chiave UNION. Pertanto, SQL Server richiede metadati per solo la prima query e ignora la seconda query. Se si modifica l'ordine delle query, SQLDescribeCol restituisce dati corretti.
Risoluzione
Per risolvere questo problema, utilizzare SQL Server Native Client 11.0 o versione successiva dell'applicazione. Per ottenere SQL Server Native Client 11.0, o per ulteriori informazioni, visitare il seguente sito Web Microsoft Download Center:
Soluzione alternativa
Per risolvere questo problema, eseguire una delle seguenti operazioni:
-
Compilare la query in una stored procedure che utilizza parametri.
-
Invertire l'ordine delle istruzioni Selezionare nella query di unione in modo che il campo costante dell'ultima istruzione SELECT .
Stato
Microsoft ha confermato che questo è un problema noto di versioni precedenti di SQL Server e SQL Server Native Client.
Microsoft ha confermato che questo problema si verifica nei prodotti Microsoft elencati all'inizio di questo articolo.
Riferimenti
Per ulteriori informazioni su questo problema e sulla procedura per riprodurre il problema, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
BUG 308264 : SQLDescribeCol restituisce errato di dimensioni di colonna in una Query di unione complessa con parametriQuesto problema si è verificato in Data Access Components (MDAC), anche, è stato risolto in MDAC 2.6. Per ulteriori informazioni, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
308211 FIX: SQLDescribeCol restituisce errato di dimensioni di colonna in una Query di unione con parametri