23. januar 2000 - 18:36Der er
15 kommentarer og 1 løsning
Access replikerings&ODBC fejl
Se lige foelgende fejlmeddelelse: ********** Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Operation not supported on replicable databases that have not been converted to the current version.
/admin/runsql.asp, line 29 ********* SQL-strengen er foelgende: update emails set navn='Birger' where email='xyz@abc.dk'.
Der er ikke noget problem med at hente data fra ODBC kilden. Det er tilsyneladende kun naar der skal skrives i tabellen at det gaar galt. Jeg har dobbelttjekket at der er skriverettigheder til biblioteket - saa hvad goer jeg galt????
Jeg har nu fundet hjælp i Microsofts Knowledge Base - løsningen er at "nedgradere" MDAC til en version før 2.1 (2.0xXX?). MDAC 2.1 indeholder nemlig Jet 4.0, som ikke kan ændre i en replikeret Access97 base. Knowledge base beskriver en løsning vha. Visual Basic - men hvad gør man når man ikke har VB??? Jeg ville gerne bare fjerne installationen, men det er nemmere sagt end gjort. Jeg har prøvet at installere MDAC 2 igen, men et tjek med et kontrolprogram viser at MDAC stadig er på 2.1. Jeg kan ikke finde nogle afinstallationsprocedurer - hvad gør jeg???
Jeg mener godt man kan have begge versioner af MDAC installeret. Så, installer ver. 2.0 og opret en ODBC forbindelse til din database og anvend denne istedet. Det betyder at det er jetengine v3.51 der kalder basen frem for v4.0
Problemet bunder i, at ODBC-driverne til hhv. Access97 (Jet3.5x) og Access2K (Jet4) er én og samme fil - bare i to versioner. Filen hedder odbcjt32.dll. Jeg fandt en måde at komme delvist uden om dette: find en "gammel" odbcjt32.dll-fil, giv den et andet navn (fx. odbcjt32_35.dll) og læg den ved siden af den nye. I registry ((HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\<dsn-navn>) kan man så finde referencen til filen (nøglen "driver") og ændre det til det nye navn (her altså odbcjt32_35.dll).
Det virker desværre kun for det ene af de to sites der har problemer - så jeg kan stadig bruge gode råd...
Hmmm, ved du om man kan initiere db-connection med et "property" set ala vc++?
Hvis, så ved jeg man med dette pr. def. kan pege direkte på den version af MDAC du vil bruge...
Second:
Jeg har tidligere haft lignende problemer med programmer skrevet til v3.51. Årsagen var at maskinerne var blevet pre-loadet med v4.0. For at løse problemet rullede vi bare MDAC2.0 på og vupti, ingen problemer længere. Så jeg kan ikke rigtig forstå at det skulle være en og samme fil? (med mindre version 4.0 ikke fungerer længere (det har jeg nemlig ved nærmere eftertanke ikke checket))
Se evt. http://www.trigeminal.com/usenet/usenet019.html - punkt 6 vedr. ODBC. Hvis du lægger MDAC 2.0 på vil jeg vædde på at Jet4/Access2000 applikationer ikke virker længere. Men bortset fra det vil jeg gerne vide hvordan du har installeret MDAC 2.0. Jeg prøvede at downloade en version fra Microsoft (der er 117 forskellige udgaver af version 2.0xxxx). Men installationen fik ikke noget til at virke (selvom der ikke kom nogle fejlmeddelelser).
Jeg er som sagt ikke 100% sikker, men det er dog et faktum at jeg har lagt begge versioner på samme maskine. Og jeg har mellem vores skriverier checket op på to af mine applikationer og disse anvender hver sin version af jet --> Microsoft.Jet.OLEDB.4.0 & Microsoft.Jet.OLEDB.3.51 Jeg har dog ikke leget med disse i relation til Access 2000.
Med hensyn til MDAC 2.0 rullede jeg den bare på, ingen spørgsmål stillet...
db-sessionen/connection (i programmet) bliver initieret med enten Microsoft.Jet.OLEDB.4.0 eller Microsoft.Jet.OLEDB.3.51. Det var af den årsag jeg spurgte om du havde mulighed for at initiere via et property-set.
Det er en forbindelse til en db fra asp du vil have, ik'?
Jo - præcis. Jeg har kodestumper der ser således ud: **** uden DSN **** set conn = server.createobject("ADODB.connection") conn.Open "DBQ=D:\base\dmamusic\dma.mdb;DefaultDir=d:\base\dmamusic\;Driver={Microsoft Access Driver (*.mdb)}" **** med DSN ***** set conn = server.createobject("ADODB.connection")
conn.open "dsn=dma" *****
Jeg kan ikke finde ud af hvor jeg i ovenstående kan specificere 3.5 eller 4.0. Kan du ikke poste din connect-kode?
Jeg har ingen ide om hvordan man gør det i ASP, men ved at du kan gøre det i andre sprog?!, men er det ikke noget med at du skal gøre det via odbc som vi "talte" om tidligere?!
Jeg har efterfølgende kigget lidt på min egen opsætning og jeg mener ikke der er tale om 2 ens filer:
De 2 filer er ikke ens, ejheller samme størrelse. Hvis du under advanced options sætter driveren til at peger specifikt på den driver du ønsker at bruge til pågældende ODBC forbindelse, skulle den så ikke virke?!
Hvis jeg går ind i ODBC-kontrolpanelet kan jeg under fanen "Drivere" se én "Microsoft Access Driver (*.mdb)" med versionsnummeret 4.00.3711.08. Og hvis jeg opretter et systemDSN kan jeg ligeledes kun vælge én Access-driver: den nyeste. Under "Avancerede indstillinger" kan jeg sætte en Driver-specifikation - men det svarer formentlig til den Driver-nøgle i registreringsdatabasen som jeg allerede har prøvet - uden held. Jeg har nu ikke set/prøvet MSJTOR35.DLL endnu.
Beklager den lange pause - må have glemt spørgsmålet. Løsningen - hvis man kan kalde det sådan - blev at opgradere til Acc2K - ganske smart for Microsoft...
Men det har til gengæld betydet den væsentlige forskel at vi nu kan replikere over internettet - det var ikke muligt før pga proxy.
Tak for hjælpen til privaten, men jeg kan altså ikke give point, da dine svar ikke bragte mig videre.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.