PRB: Chyba "Syntax blízko"Tablename"" na aktualizáciu záznamov

Preklady článku Preklady článku
ID článku: 195979 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

Príznaky

Server SQL Server quoted_identifier možnosť nastavená na vypnuté, môžete môže zobrazí nasledovná chyba:
Run-time chyba "-2147217900 (80040e14)":
1. Riadok: Syntaktická chyba v blízkosti "tablename"
Táto chyba sa vyskytuje, keď používate Microsoft OLE client-bočné kurzory DB Provider for SQL Server (SQLOLEDB). O ActiveX údajov dôjde k chybe Objekty (ADO) záznamov Aktualizácia metóda a sa môže vyskytnúť na metódu AddNew .

Príčina

S ADO klient-bočné kurzory, pri vyvolaní ADO záznamov je AddNew alebo Aktualizácia metóda, OLE DB Provider pripravuje SQL na Odoslať SQL Server.

Poskytovateľ Microsoft OLE DB pre SQL Server automaticky Citáty identifikátory na množina záznamov súčasti ADO metódu Update a môže citovať identifikátory AddNew metódy. Identifikátory obsahujú tabuľky názvy a názvy polí.

Napríklad aktualizácia tabuľky titulov v databáze krčmy s nasledujúci kód:
MyADORecordet.Update
				
Predchádzajúcom by pripraviť podobné nasledovnému:
UPDATE "titles" SET "title"='Hello World' WHERE "title_id"='3'
				
Upozorňujeme, že názov tabuľky v Citáty, "tituly", a že každé pole názov sa cituje, "hlava", "title_id" a tak ďalej.

Ak server SQL Server Quoted_Identifier možnosť nastavená na vypnuté, SQL Server nepozná tabuľky mená a názvy polí umiestnený v úvodzovkách.

Syntaktická chyba " v blízkosti "tablename" "vyskytuje.

Riešenie

Ak nemáte dôvod nastaviť citoval identifikátorov nastaviť späť na a vyššie chybové hlásenie sa už zobrazí.

Ak je to potrebné citoval identifikátory vyrazili, nasledujú dva riešenia, ktoré vám umožní nastaviť quoted_identifier možnosť a aktualizovať záznamy pomocou ADO skupín záznamov:
  • Použiť server-bočné kurzory.

    Napríklad, pred otvorenia ADO pripojenie objekt s názvom KN, použite nasledujúcu syntax:
    cn.CursorLocation = adUseServer
    						
    - alebo -
  • Pomocou poskytovateľa Microsoft OLE DB pre ovládače ODBC s Ovládač ODBC Microsoft SQL Server.

    V predvolenom nastavení SQL Server ODBC vodič cituje identifikátorov. Avšak, môžete nakonfigurovať SQL Server ODBC vodič pripraviť príkazy SQL bez citoval identifikátorov.

    Poznámka: musíte použiť SQL Server ovládač ODBC 2.65.0240 lode s SQL Server 6.5 Service Pack 2 alebo novší ovládač. Skoršie SQL Server Ovládače ODBC nemajú túto schopnosť.
    1. Pridať "QuotedID = No" pripojenia ODBC reťazec.

      - alebo -
    2. Jasné, v Microsoft SQL Server Konfigurácia zdroja údajov (DSN) názov použiť identifikátory ANSI v úvodzovkách .
      1. Otvorenie dialógového okna Správca ODBC.
      2. Otvoriť názov DSN používateľa alebo systém DSN, ktorý používate na pripojenie k databáze SQL Server.
      3. Kliknite na tlačidlo ďalej , kým sa nedostanete dialógové okno s Použitia ANSI citoval identifikátorov.
      4. Zrušte začiarknutie políčka Použiť ANSI citoval identifikátory.
      5. Kliknite na tlačidlo Dokončiť.
Poznámka: príklady obe riešenia sú uvedené v "Ďalšie informácie" sekcia.

Stav

Toto správanie je zámerné.

Ďalšie informácie

ADO a podkladových OLE DB Provider nie sú vedomí Nastavenie SQL Server quoted_identifier, ako ich stanovili Transact SQL (T-SQL) výkazy:
  • Set quoted_identifier Off

    - alebo -
  • Set quoted_identifier na
ADO v citované identifikátor klienta správanie je odvodený od základné poskytovateľ pripojenia OLE DB. Preto klient-bočné kurzory, musíte Konfigurácia poskytovateľa citát alebo citát identifikátormi, závisí od Nastavenie SQL Server quoted_identifier.

OLE DB Provider for SQL Server automaticky Citáty identifikátory na zaistenie toho, ak identifikátor obsahuje špeciálny znak, to bude upresnené, ako to vyžaduje SQL Server. Všimnite si, že identifikátor nemá vlastne obsahuje špeciálny znak. Je to len možnosť, že spôsobuje OLE DB Provider citovať identifikátor. OLE DB Provider for SQL Server nemá na vlastnosť výslovne určiť, že identifikátory by alebo by mali byť kótované.

Môžete nakonfigurovať poskytovateľ pripojenia OLE DB pre ODBC pripraviť príkazov SQL s alebo bez úvodzoviek identifikátorov. To používa ovládač ODBC pre QuotedID umožňuje určiť, či chcete citovať identifikátorov. Z tohto dôvodu vám môže zahrnúť "QuotedID = Yes" alebo "QuotedID = No" možnosť v ODBC pripojenie reťazec, alebo vybrať alebo zrušiť výber "Použitie ANSI citoval identifikátory" v nastavení DSN. Všimnite si, že, podľa predvolené, "QuotedID = Yes", nariaďuje ODBC na ponuku identifikátorov.

Keď použijete ADO server-bočné kurzory, kurzory otvoriť na serveri. OLE DB Provider pripravuje T-SQL sp_cursoropen, sp_cursorfetch, a súvisiacich kurzor na strane servera výkazy, namiesto akčné dotazy.

ADO Objekt Connection "Citoval identifikátor citlivosti" vlastníctvo výstavy Konfigurácia poskytovateľa používa citovať identifikátorov. "Citoval identifikátor Citlivosť"vlastnosť je iba na čítanie, a k dispozícii len na run-time po Objekt Connection sa otvoril. Vlastnosť "Citoval identifikátor citlivosť" dostupná len pre niektorých poskytovateľov, a SQL Server ODBC Poskytovateľov. Vlastnosť je iba na čítanie, nemôžete použiť kótované" Identifikátor citlivosť"vlastnosť nastaviť poskytovateľa na citáciu alebo nie citácie identifikátory.

Objekt pripojenia ADO read-only "kótované Identifikátor citlivosť"nehnuteľnosť bude takto:
   8 - When the Provider is configured to quote identifiers.
   0 - When the Provider is configured not to quote identifiers.
				

Kroky na reprodukovanie správania

Poznámka: V nasledujúcich príkladoch kód nahradiť váš server názov pre servername v reťazce pripojenia.

Tento príklad používa Krčmy databáza, ktorá prichádza s aplikáciou SQL Server.
  1. Vytvorenie používateľského rozhrania:
    1. V jazyku Visual Basic, vytvoriť nový projekt štandardné .exe. V predvolenom nastavení sa vytvorí Form1.
    2. Pridanie tlačidla príkazu na Form1.
  2. Nastaviť odkaz na Microsoft ActiveX Data objekty Knižnica.
  3. Skopírujte a prilepte nasledujúci kód do kliknite na udalosť Command1.

    Poznámka Musíte zmeniť User ID <username> a heslo <strong password="">na správne hodnoty pred spustením tohto kód. Uistite sa, že užívateľské meno má príslušné povolenia na vykonanie tohto operácie na databázy.</strong> </username>
    Dim strcn As String
          Dim cn As New ADODB.Connection
          Dim rs As New ADODB.Recordset
    
          strcn = "Provider=SQLOLEDB;User ID=<user name>;Password=<strong password>;Initial Catalog=Pubs;"
          strcn = strcn &amp; "Data Source=servername"
    
          cn.ConnectionString = strcn
    
          'Error occurs with Client-side cursors.
          cn.CursorLocation = adUseClient
    
          cn.Open
    
          'Instruct SQL Server to turn off Quoted_Identifier.
          cn.Execute "set quoted_identifier off"
    
          rs.Open "select * from titles", cn, adOpenKeyset, adLockOptimistic
          rs(1).Value = "Hello World"
    
          'Error occurs on this line.
          rs.Update
    
          rs.Close
          Set rs = Nothing
          cn.Close
          Set cn = Nothing
    					
  4. Testovacia aplikácia s nasledujúcimi:
    1. Voliteľne, spustite program SQL Server SQLTrace na server. SQLTrace je samostatný program v skupine SQL Server 6.5. SQLTrace vám umožňuje zobraziť príkazy SQL, ktoré prichádzajú v SQL Server.
    2. V prostredí Visual Basic kliknutím na príkazové tlačidlo v run-time spôsobuje nasledujúca chyba:
      Run-time error '-2147217900 (80040e14)':
                     Line 1: Syntax error near 'tablename'
      						
    3. Ak používate SQLTrace, môže preskúmať T-SQL Aktualizácia vyhlásenie, že vytvoril OLE DB Provider pre SQL Server. Všimnite si, že tabuľky názvy a názvy polí zobrazujú v úvodzovkách.

Príklady riešenia

Pomocou OLE DB Provider pre ovládače ODBC (MSDASQL)

Musíte použiť SQL Server ODBC ovládač 2.65.0240, ktorý sa dodáva s SQL Server 6.5 Service Pack 2 alebo novší ovládač.

Upraviť reťazec pripojenia v predchádzajúcom príklade nasledujúce.

Poznámka Musíte zmeniť UID <username>a PWD <strong password="">na správne hodnoty pred spustením tohto kód. Uistite sa istí, že UID má príslušné povolenia na vykonanie tejto operácie na databázy.</strong> </username>
   strcn = "Provider=MSDASQL;driver=SQL Server;UID=<user name>;PWD=<strong password>;"
   strcn = strcn &amp; "DATABASE=pubs;SERVER=servername;QuotedId=No"
				

Použitím Server-bočné kurzory

Upraviť KN.CursorLocation v predchádzajúcom príklade sa po:
   cn.CursorLocation = adUseServer
				
Ak používate SQL Server SQLTrace program, môže preskúmať sp_cursor T-SQL výkazy, ktoré vytvára OLE DB Provider.

Odkazy

SQL Server Books Online; vyhľadávanie na: "quoted_identifier."

Diskusiu o konfigurovaní ovládača ODBC SQL Server s QUOTED_IDENTIFIER zapnúť alebo vypnúť, prosím pozri článok v Microsoft Knowledge Base:
135533INF: Rozdiely v správaní SQL ODBC a pre príkazový

Vlastnosti

ID článku: 195979 - Posledná kontrola: 1. júla 2013 - Revízia: 3.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Kľúčové slová: 
kbprb kbmt KB195979 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok je preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft a možno ho opraviť prostredníctvom technológie Community Translation Framework (CTF). Microsoft ponúka strojovo preložené články, články upravené komunitou aj články preložené prekladateľmi, aby zabezpečil prístup ku všetkým článkom databázy Knowledge Base vo viacerých jazykoch. Strojovo preložené články aj upravené články môžu obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky. Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené neprávnym prekladom obsahu alebo jeho použitím zo strany našich zákazníkov. Ďalšie informácie o technológii CTF nájdete na lokalite http://support.microsoft.com/gp/machine-translation-corrections/sk.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 195979

Odošlite odozvu

 

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