Announcement

Collapse
No announcement yet.

Mit SQL-Server2005 Zugriff auf Access(2000)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mit SQL-Server2005 Zugriff auf Access(2000)

    Hallo zusammen!

    Zu dem Thema suche ich seit Stunden in der Onlinehilfe und im Netz, und stolpere wohl über eine Hürde, die ich als SQL-Serverneuling nicht erkenne, und wäre sehr dankbar, wenn mir einer der Teilnehmer hier eine Hilfestellung geben kann.

    Bei einer Umstellung von Access 2000 auf SQL-Server möchte ich die Daten per TSQL aus Access auslesen und auf denSQL-Server importieren (wird ein täglicher Job).

    Per Online-Hilfe (und Suche hier im Forum) habe ich folgende Schritte durchgeführt:
    - laut Onlinehilfe einen >nicht kompletten< Eintrag in der Registry durchgeführt

    (Zitat:Verwenden Sie den Registrierungs-Editor, um den vollständigen Pfadnamen der von Access verwendeten Datei mit Arbeitsgruppeninformationen zu diesem Registrierungseintrag hinzuzufügen:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engi nes\SystemDB):Zitat Ende

    Dort habe ich erst einmal den Ordner SystemDB erstellt und meinen Pfad eingetragen, wie folgt:
    Name: Standard (war Autowert)
    Typ: REG_SZ (war Autowert)
    Wert: 'E:\Test\Test.mdb'

    Was mit Arbeitsgruppeninformation gemeint ist, und in welcher Syntax ich diese eintragen soll, erschließt sich mir nicht.

    - dann einen Verbindungsserver angelegt, wie folgt

    EXEC sp_addlinkedserver
    @server='TestAccess',
    @srvproduct = 'Access',
    @provider = 'Microsoft.Jet.OLEDB.4.0',
    @datasrc = 'E:\Test\Test.mdb'
    GO
    EXEC sp_addlinkedsrvlogin
    @rmtsrvname='TestAccess',
    @useself='false',
    @rmtuser='administrator',
    @rmtpassword='help'
    GO

    - versuche ich nun auf eine Tabelle in der "verlinkten" Datenbank zu referenzieren, dann erscheint nach folgendem Statement unterer Fehler:
    SELECT * FROM TestAccess...Testtabelle

    Fehler:
    Der OLE DB-Anbieter "Microsoft.Jet.OLEDB.4.0" für den Verbindungsserver "Testaccess" hat die Meldung "Die Anwendung kann nicht gestartet werden. Die Informationsdatei für die Arbeitsgruppe fehlt oder ist exklusiv von einem anderen Benutzer geöffnet." zurückgeben.
    Meldung 7399, Ebene 16, Status 1, Zeile 1
    Der OLE DB-Anbieter "Microsoft.Jet.OLEDB.4.0" für den Verbindungsserver "Testaccess" hat einen Fehler gemeldet. Fehler bei der Authentifizierung.
    Meldung 7303, Ebene 16, Status 1, Zeile 1
    Das Datenquellenobjekt des OLE DB-Anbieters "Microsoft.Jet.OLEDB.4.0" für den Verbindungsserver "Testaccess" kann nicht initialisiert werden.

  • #2
    Hallo,

    Die Informationsdatei für die Arbeitsgruppe fehlt oder ist exklusiv von einem anderen Benutzer geöffnet
    Eine ACCESS-Datenbank unterscheidet zwischen dem Datenbankkennwort (für das keine Arbeitsgruppen-Informationsdatei alias Systemdatenbank benötigt wird) und den Benutzer-Zugangsdaten (Benutzername/Passwort). Ein Datenbankkennwort wird direkt in der Datenbank abgelegt. In der separaten Arbeitsgruppen-Informationsdatei werden die Benutzerkonten der Anwender gespeichert, die gemeinsam auf die Datenbank zugreifen dürfen.

    Die Fehlermeldung "Die Informationsdatei für die Arbeitsgruppe fehlt oder ist exklusiv von einem anderen Benutzer geöffnet" wird auch dann ausgelöst, wenn die ACCESS-Datenbank nur mit einem Datenbankkennwort gesichert wurde und in der Verbindungszeichenfolge dieses über den Parameter
    Jet OLEDB: Database Password nicht übergeben wird.

    Alternativ zum Linked Server-Eintrag kann auch die OPENROWSET-Funktion des MS SQL Servers genutzt werden, um auf die ACCESS-Datenbank zuzugreifen. Ich würde daher zuerst probieren, ob der folgende Aufruf mit einer ACCESS-Datenbank, die kein Datenbankkennwort hat, erfolgreich ist:
    [highlight=SQL]
    USE tempdb
    GO

    SELECT
    *
    INTO
    NeueTabelle
    FROM
    OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'C:\Temp\Nordwind.mdb';'admin';'', Kunden) AS k
    WHERE
    k.Firma IS NOT NULL
    [/highlight]
    Zuletzt editiert von Andreas Kosch; 05.03.2008, 08:58.

    Comment


    • #3
      Hallo,

      danke für den Tipp, aber oberes Statement funktioniert auch nicht mit einer "frischen" Access-Datenbank ohne DB-Kennwort; es erscheint die selbe Fehlermeldung wie in meinem Eingangsposting.

      Ich habe nun den "ad hoc distributed queries"-Parameter freigeschaltet und kann nun mit
      SELECT * FROM
      OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
      'Data Source=\\Pfad\Datenbank.mdb;Jet OLEDB: Database Password=pass')...Tabelle
      über OLEDB auf die Tabellen zugreifen (was mich noch mehr verwirrt).

      Das kann allerdings nur eine Notlösung sein - der Zugriff über einen Verbindungsserver ist doch Standard und sollte problemlos zu bewerkstelligen sein.

      Comment


      • #4
        Hallo,

        hast du schon mal überprüft, ob folgender Registry-Eintrag gesetzt ist ?

        [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\ Providers\Microsoft.Jet.OLEDB.4.0]
        "DisallowAdhocAccess"=dword:00000000

        Dies hat bei mir ein ähnliches Problem gelöst

        siehe auch:

        http://www.microsoft.com/technet/sec.../fq00-014.mspx

        dort wird erklärt, wie man Ad-Hoch Zugriffe sperren kann:

        mit DisallowAdhocAccess"=dword:00000000 werden die Zugriffe erlaubt.

        Comment

        Working...
        X