ISPRAVKA: Dobijate poruku o grešci "Nenavedena greška" kada koristite OLE DB dobavljač za SQL Server da biste izmenili red tabele

Simptomi

Kada pokušate da izmenite zapis u tabeli koristeći Microsoft OLE DB dobavljač za SQL Server (SQLOLEDB), dobijate sledeću poruku o grešci:

Napomena

Greška tokom izvršavanja'-2147467259 (80004005)':
Nenavedena greška

Dobićete ovu poruku kada su ispunjeni svi sledeći uslovi:

  • Tabela sadrži okidač, a okidač koristi komandu FETCH.

  • Računar ima instaliran Microsoft Data Access Components (MDAC) 2.8.

  • Komanda FETCH ne koristi opcionalnu odredbu INTO.

Rešenje

Da biste rešili ovaj problem, nabavite najnoviji servisni paket za Microsoft Windows XP. Kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja da biste videli dodatne informacije:

322389 Nabavljanje najnovijeg servisnog paketa za Windows XP

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku „Odnosi se na“.

Koraci za reprodukovanje problema

Da biste reprodukovali problem, kreirajte okidač ažuriranja koji koristi komandu FETCH, a zatim kreirajte Microsoft Visual Basic 6.0 projekat:

  1. Pokrenite SQL Query Analyzer, a zatim se povežite sa instancom sistema SQL Server 2000.

  2. On the Query menu, click Change Database. Pojavljuje se dijalog " Izbor baze podataka imena servera ".

    Napomena: Ime servera je čuvar mesta za ime instance sistema SQL Server 2000 sa kojom ste povezani.

  3. U koloni " Ime " izaberite stavku "kafane", a zatim kliknite na dugme "U redu".

  4. U SQL analizatoru upita pokrenite sledeći Transact-SQL izraz:

    CREATE TRIGGER jobs_Trigger1
    ON dbo.jobs
    FOR UPDATE AS
    
    BEGIN
    
    DECLARE    @job_id int
    DECLARE job_inserted_cursor CURSOR
    LOCAL
    FAST_FORWARD
    FOR 
      Select job_id 
       FROM inserted 
    
    OPEN job_inserted_cursor
    
    FETCH NEXT FROM job_inserted_cursor    /*  The error occurs. */
    /* FETCH NEXT FROM job_inserted_cursor INTO @job_id        The error does not occur. */
    
    CLOSE job_inserted_cursor
    DEALLOCATE job_inserted_cursor
    
    END
    
    
  5. Pokrenite Microsoft Visual Basic 6.0.

  6. U dijalogu " Novi projekat " izaberite stavku "Standardni EXE", a zatim kliknite na dugme "Otvori". Podrazumevano se pravi obrazac pod imenom "Obrazac1".

  7. U istraživaču programa Project kliknite desnim tasterom miša na obrazac "Obrazac1 ", a zatim izaberite stavku "Prikaži kôd".

  8. Nalepite sledeći kôd u prozor sa kodom obrasca "Obrazac1":

    Dim cn
    Dim rs
    
    Private Sub Form_Load()
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=SQLOLEDB;Pwd=<password>;UID=<user name>;Initial Catalog=pubs;Data Source=<data source>"
    cn.CursorLocation = 2
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open "select * from jobs", cn, 1, 3
    rs.MoveLast
    rs(1).Value = "Test"
    rs.Update
    End Sub
    
    

    Napomena, lozinka, korisničko ime i izvor podataka su čuvari mesta za lozinku, korisničko ime i izvor podataka za okruženje.

  9. U meniju "Pokreni " kliknite na dugme "Start". Primetili ste poruku o grešci koja se pominje u odeljku "Simptomi".

Reference

Kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja da biste videli dodatne informacije:

824684 Opis standardne terminologije koja se koristi za opisivanje Microsoft softverskih ispravki

Za više informacija posetite sledeće Microsoft Developer Network (MSDN) veb lokacije:

Instaliranje OLE DB dobavljača za SQL Server
https://msdn2.microsoft.com/library/aa198252(sql.80).aspx

Pokretači
https://msdn2.microsoft.com/library/aa213995(sql.80).aspx

Transact-SQL kursori
https://msdn2.microsoft.com/library/aa172595(sql.80).aspx