FIX: Messaggi di errore quando si esegue una query su un server collegato che si crea in SQL Server 2005: "Impossibile preparare Statement(s)" e "il prefisso di colonna '<column_prefix_name>' non corrisponde a un nome di tabella o alias utilizzato nella query"

Traduzione articoli Traduzione articoli
Identificativo articolo: 936223 - Visualizza i prodotti a cui si riferisce l?articolo.
Bug #: 50001186 (SQL Hotfix)
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Si consideri il seguente scenario. In SQL Server 2005, è possibile creare un server collegato utilizzando il provider SQL Native Client OLE DB (SQLNCLI). Il server collegato è collegato a un server con Microsoft SQL Server 2000. In questo scenario, viene visualizzato il seguente messaggio di errore quando si esegue una query a fronte del server collegato:
Messaggio di errore 1
Msg 8180, livello 16, stato 1, riga 1
Impossibile preparare una o più istruzioni.
Messaggio di errore 2
Msg 107, livello 16, stato 2, riga 1
Il prefisso di colonna ' <column_prefix_name> ' non corrisponde a un nome di tabella o alias utilizzato nella query.


Nota Questo problema si verifica anche in SQL Server 2008. Se il problema si verifica quando ci si connette a un server SQL Server 2000 in SQL Server 2008, è necessario attivare il flag di traccia 4112 per risolvere il problema. Per ulteriori informazioni, vedere la sezione "Informazioni".

Cause

Questo problema si verifica perché SQL Server 2005 genera un piano di esecuzione che dispone di una query remota. SQL Server 2005 è necessario eseguire la query remota in SQL Server 2000 per recuperare i dati necessari. SQL Server 2000 non è in grado di gestire la query remota. Pertanto, si verifica errore 107 in SQL Server 2000. Errore 107 viene quindi propagate a SQL Server 2005. Di conseguenza, si verifica l'errore 107 in SQL Server 2005 e si verifica l'errore 8180 in SQL Server 2005.

Risoluzione

Informazioni sull'aggiornamento cumulativo

La correzione di questo problema è stata rilasciata prima nell'aggiornamento cumulativo 2. Per ulteriori informazioni su come ottenere questo pacchetto di aggiornamento cumulativo per SQL Server 2005 Service Pack 2, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
936305Pacchetto di aggiornamento cumulativo 2 per SQL Server 2005 Service Pack 2
Nota Poiché le generazioni sono cumulative, ogni nuova versione di correzione contiene tutti gli hotfix e tutte le correzioni di protezione fornite con SQL Server 2005 precedente correggere rilascio. Si consiglia di considerare l'applicazione alla versione più recente di correzione che contiene questo aggiornamento rapido (hotfix). Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
937137Versioni di SQL Server 2005 rilasciate dopo il rilascio di SQL Server 2005 Service Pack 2
Gli aggiornamenti rapidi di Microsoft SQL Server 2005 vengono creati per specifici i service pack di SQL Server. È necessario applicare un hotfix di SQL Server 2005 Service Pack 2 per un'installazione di SQL Server 2005 Service Pack 2. Per impostazione predefinita, qualsiasi hotfix fornito in un service pack di SQL Server è incluso nel prossimo service pack di SQL Server.

Workaround

Per aggirare questo problema, utilizzare il Provider Microsoft OLE DB per ODBC per creare il server collegato in SQL Server 2000.

Status

Microsoft ha confermato che si tratta di un problema con i prodotti elencati nella sezione "Si applica a".

Informazioni

Il pacchetto di aggiornamento cumulativo (build 3175) per SQL Server 2005 SP2 e SQL Server 2008 entrambi introdurre 4112 il flag di traccia. Dopo avere applicato il pacchetto di aggiornamento cumulativo (build 3175) per SQL Server 2005 SP2, è necessario attivare il flag di traccia 4112 per risolvere il problema. Per informazioni sull'attivazione di un flag di traccia in SQL Server 2005, vedere la sezione "Osservazioni" del seguente sito Web MSDN (informazioni in lingua INGLESE):
http://msdn2.microsoft.com/en-us/library/ms188396.aspx

Procedura per riprodurre il problema

  1. Avviare SQL Server Management Studio e connettersi a un'istanza di SQL Server 2005.
  2. Creare una nuova query e quindi eseguire le istruzioni riportate di seguito.
    EXEC sp_addlinkedserver
    @server = '<LinkedServerName>', 
    @provider = 'SQLNCLI', 
    @srvproduct = '', 
    @datasrc = '<InstanceName>', 
    @catalog = '<DatabaseName>' 
    
    exec sp_serveroption
    @server = '<LinkedServerName>' 
    ,@optname = 'RPC' 
    ,@optvalue = 'TRUE'
    exec sp_serveroption
    @server = '<LinkedServerName>' 
    ,@optname = 'RPC OUT' 
    ,@optvalue = 'TRUE'
    
    
    DECLARE @supervisorID varchar(40)
    set @supervisorID = 'Volume Discount'
    
    SELECT DISTINCT J.STOR_ID
    FROM   [<LinkedServerName>].[<DatabaseName>].DBO.DISCOUNTS J
    WHERE  J.DISCOUNTTYPE = @supervisorID
           AND J.DISCOUNT = (SELECT MAX(B.DISCOUNT)
                             FROM   [<LinkedServerName>].<DatabaseName>.DBO.DISCOUNTS B
                             WHERE  B.DISCOUNTTYPE = J.DISCOUNTTYPE)
    
    GO
    
    Note
    • <LinkedServerName>è un segnaposto per il nome del server collegato.
    • <InstanceName>è un segnaposto per il nome dell'istanza per il server collegato.
    • <DatabaseName>è un segnaposto per il nome del database.
Dopo aver eseguito queste istruzioni, si ricevono i messaggi di errore menzionati nella sezione "Sintomi".

Proprietà

Identificativo articolo: 936223 - Ultima modifica: martedì 2 febbraio 2010 - Revisione: 2.0
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
Chiavi: 
kbmt kbsql2005engine kbexpertiseadvanced kbfix kbpubtypekc kbqfe KB936223 KbMtit
Traduzione automatica articoli
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: 936223
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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