Identificativo articolo: 195979 - Ultima modifica: lunedì 14 marzo 2005 - Revisione: 3.2 PRB: Errore "Errore di sintassi accanto alla tabella 'nometabella" "all'aggiornamento di Recordset
In questa paginaSintomiOpzione di SQL Server quoted_identifier impostata su OFF, è possibile che venga visualizzato il seguente errore: Errore di run-time '-2147217900 (80040e14)': Riga 1: Errore di sintassi vicino "tablename" CauseCon cursori sul lato client ADO, quando si richiama un oggetto ADO metodo AddNew o aggiornamento del recordset, il provider OLE DB prepara un'istruzione SQL per inviare a SQL Server. Il Provider Microsoft OLE DB per SQL Server automaticamente virgolette gli identificatori di metodo Update di un recordset ADO e può essere offerta gli identificatori di un metodo AddNew . Gli identificatori includono i nomi delle tabelle e i nomi dei campi. Aggiornamento, ad esempio, della tabella dei titoli nel database pubs con il codice riportato di seguito: Se SQL Server opzione QUOTED_IDENTIFIER è impostata su OFF, SQL Server non riconosce i nomi di tabella e campo nomi racchiusi tra virgolette. Si verifica l'errore "Errore di sintassi vicino"tablename"". RisoluzioneSe non si dispone di un motivo per impostare l'identificatori tra virgolette, consente di impostarli nuovamente in e il precedente messaggio di errore non verrà visualizzato. Se è necessario disporre di identificatori distanziare tra virgolette, riportato di seguito è due soluzioni alternative che consentono di impostare l'opzione quoted_identifier off e aggiornare i record utilizzando ADO Recordset:
StatusQuesto comportamento legato alla progettazione. InformazioniADO e il sottostante provider OLE DB non sono a conoscenza di impostazione per il quoted_identifier, come impostato da di Transact SQL (T-SQL) istruzioni SQL Server:
Il provider OLE DB per SQL Server offerte automaticamente gli identificatori per garantire che se l'identificatore contiene un carattere speciale, esso verrà racchiuso tra virgolette, come richiesto da SQL Server. Si noti che l'identificatore non è effettivamente contenere un carattere speciale. È solo la possibilità che fa sì che il provider OLE DB citare l'identificatore. Il provider OLE DB per SQL Server non dispone di una proprietà per specificare che gli identificatori devono o non devono essere racchiuso tra virgolette in modo esplicito. È possibile configurare il provider OLE DB per ODBC preparare le istruzioni SQL con o senza racchiudere gli identificatori tra virgolette. Utilizza l'impostazione di driver ODBC per QuotedID per determinare se gli identificatori di offerta. Per questo motivo, è possibile includere il "QuotedID = yes"o"QuotedID = No" opzione ODBC connettersi stringa oppure selezionare/deselezionare "Usa ANSI tra virgolette identificatori" in una configurazione DSN. Si noti che, per impostazione predefinita, "QuotedID = yes", con le istruzioni ODBC per gli identificatori di offerta. Quando si utilizzano ADO cursori sul lato server, i cursori aperti sul server. Il provider OLE DB consente di preparare i sp_cursoropen T-SQL, sp_cursorfetch e istruzioni di cursore sul lato server correlato, anziché le query di azione. Proprietà di "Quoted identifier riservatezza" dell'oggetto ADO Connection illustrata la configurazione che un provider utilizzato per gli identificatori di offerta. La proprietà "Quoted Identifier Sensitivity" è di sola lettura e disponibile solo in fase di esecuzione dopo l'apertura dell'oggetto Connection. La proprietà "Quoted Identifier Sensitivity" disponibile solo per alcuni provider, inclusi il SQL Server e il provider ODBC. Poiché la proprietà è di sola lettura, non è possibile utilizzare la proprietà "Quoted Identifier Sensitivity" per configurare un provider per offerta o l'offerta non identificatori. L'oggetto ADO Connection di lettura - solo proprietà di "Quoted identifier riservatezza" sarà come segue: 8 - When the Provider is configured to quote identifiers. 0 - When the Provider is configured not to quote identifiers. Procedura per riprodurre il problemaNota: Sostituire il nome del server per nomeserver nelle stringhe di connessione nell'esempio di codice riportato di seguito.In questo esempio viene utilizzato il database pubs fornito con SQL Server.
Esempi di soluzioniUtilizzo del provider OLE DB per driver ODBC (MSDASQL)È necessario utilizzare il driver ODBC SQL Server 2.65.0240 fornito con SQL Server 6.5 Service Pack 2 o un driver versione successivo.Modificare la stringa di connessione nell'esempio precedente al seguente. Nota <username>È necessario modificare UID <nomeutente> e PWD < strong password > con i valori corretti prima di eseguire questo codice. Assicurarsi che UID disponga di autorizzazioni appropriati eseguire questa operazione sul database. strcn = "Provider=MSDASQL;driver=SQL Server;UID=<user name>;PWD=<strong password>;" strcn = strcn & "DATABASE=pubs;SERVER=servername;QuotedId=No" Utilizzo dei cursori del serverModificare il cn.CursorLocation nell'esempio precedente al seguente:cn.CursorLocation = adUseServer RiferimentiDocumentazione in linea di SQL Server; cercare in: "quoted_identifier." Per una descrizione della configurazione il driver ODBC di SQL Server con quoted_identifier on or off, vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito: 135533
(http://support.microsoft.com/kb/135533/EN-US/
)
INF: Differenze nel comportamento SQL tra ODBC e ISQL Per ulteriori informazioni su Microsoft ActiveX Data Objects, vedere il seguente sito Web: http://msdn.microsoft.com/dataaccessado/
(http://msdn.microsoft.com/dataaccessado/)
Le informazioni in questo articolo si applicano a:
Traduzione automatica articoliIl 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: 195979
(http://support.microsoft.com/kb/195979/en-us/
)
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. | Altre risorse Altri siti di supporto
CommunityRichiedi assistenzaTraduzione articoli
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Torna all'inizio
