none
Anmeldung an Verbindungsserver zu Textdatei schlägt fehl RRS feed

  • Frage

  • Hallo Forum,

    ich verwende SQL-Server 2008 R2 und möchte einen Verbindungsserver zu einer Textdatei aufbauen. Nehme folgendes Statement:

    EXEC sp_addlinkedserver txtsrv, N'Jet 4.0',
       N'Microsoft.Jet.OLEDB.4.0',
       N'd:\Shop',
       NULL,
       N'Text';
    GO

    Wird ohne Fehler ausgeführt!

    Dann erstelle ich ein Login mit:

    EXEC sp_addlinkedsrvlogin 'txtsrv', 'true'
    GO

    Wird auch ohne Fehler ausgeführt.

    Wenn ich den Server über das Management Studio teste gibt es die Fehlermeldung:


    TITEL: Microsoft SQL Server Management Studio
    ------------------------------

    Fehler bei der Testverbindung mit dem Verbindungsserver.

    ------------------------------
    ZUSÄTZLICHE INFORMATIONEN:

    Ausnahme beim Ausführen einer Transact-SQL-Anweisung oder eines Transact-SQL-Batches. (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------

    Das Datenquellenobjekt des OLE DB-Anbieters 'Microsoft.Jet.OLEDB.4.0' für den Verbindungsserver 'txtsrv' kann nicht initialisiert werden.
    Der OLE DB-Anbieter 'Microsoft.Jet.OLEDB.4.0' für den Verbindungsserver 'txtsrv' hat die Meldung 'Unbekannter Fehler' zurückgeben. (Microsoft SQL Server, Fehler: 7303)

    Hilfe erhalten Sie durch Klicken auf: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=7303&LinkId=20476

    ------------------------------
    SCHALTFLÄCHEN:

    OK
    ------------------------------

    Wer kann mir helfen?

    Danke

    BigMS

    Mittwoch, 27. Juni 2012 07:58

Antworten

  • Hallo,

    habe jetzt das Problem gefunden! Da ich den SQL-Server 2012 benutze muss ich folgendes Skript angeben:

    --Create a linked server.
    EXEC sp_addlinkedserver txtsrv, N'Jet 12.0', 
       N'Microsoft.ACE.OLEDB.12.0',
       N'c:\data\distqry',
       NULL,
       N'Text';
    GO
    
    --Set up login mappings.
    EXEC sp_addlinkedsrvlogin txtsrv, FALSE;
    GO
    
    --List the tables in the linked server.
    EXEC sp_tables_ex txtsrv;
    GO
    
    Jetzt funktioniert es!

    Viele Grüss, BigMS

    Mittwoch, 4. Juli 2012 06:56

Alle Antworten

  • Hallo,

    schau Dir mal den Thread an: SQL Server 2008 und LINKED SEVER

    Für sp_addlinkedsrvlogin kommt i. a. als RmtUser Admin zum Einsatz,
    da die Jet mit den SQL Server bzw. Windows Konten nichts anfangen kann,
    sondern die Einträge der Jet-Systemdatenbank gelten.
    Siehe dazu Beispiel E bei sp_addlinkedserver

    Gruß Elmar

    Mittwoch, 27. Juni 2012 10:33
    Beantworter
  • BigMS

    hast Du ueberprueft, dass der SQL Server Service Account Zugriff auf das Verzeichnis und die Text Datei hat und dass die Datei zum Zeitpunkt der Query auch wirklich existiert oder durch eine andere Applikation gesperrt ist ?

    und ist "d:\shop" der vollstaendige Pfad zur Datei - wie sieht es mit der Extension aus etc.?


    Please use Mark as Answer if my post solved your problem and use Vote As Helpful if a post was useful.

    Mittwoch, 27. Juni 2012 10:35
  • Hallo Elmar,

    danke für die schnelle Antwort! Habe die Rechte an das temporäre Verzeichnis des lokalen Administrators vergeben. Allerdings ohne Erfolg.

    Werde morgen nachmittag den Server mal neu starten. Vielleicht klappts dann.

    Gruß

    BigMS

    Donnerstag, 28. Juni 2012 08:44
  • Hallo,

    auf das Verzeichnis muss das Dienstkonto des SQL Servers Zugriff haben,
    der Zugriff auf das Verzeichnis muss allgemein (z. B. Authentifzierte Benutzer) freigeben werden.
    siehe PRB: Error 7399 When You Run a Linked Server Query That Uses the OLE DB Provider for Microsoft Jet

    Und als Dienstkonto verwendet man besser ein eigenes (Domänen)-Konto
    und nicht den lokalen Administrator.

    Den Test solltest Du auch ohne Rechner-Neustart ausführen können,
    ein Dienstneustart wäre nur erforderlich, wenn Du die Environment-Variablen verändert hast -
    Rechteänderungen am Dateisystem greifen unmittelbar.

    Gruß Elmar

    Donnerstag, 28. Juni 2012 12:04
    Beantworter
  • Hallo Elmar,

    danke schon mal für Deine Hilfe!

    Ich habe jetzt, wie im Link beschrieben, die Umgebungsvariablen auf C:\Temp umgesetzt und alle Rechte auf den Domänen-Benutzer, der sich am SQLServer anmeldet, vergeben. Dann habe ich mich neu angemeldet.

    Bekomme jetzt beim Testen des Verbindungsservers schon mal eine andere Fehlermeldung:

    Meldung 7302, Ebene 16, Status 1, Prozedur sp_tables_ex, Zeile 41

    Eine Instanz des OLE DB-Anbieters 'Microsoft.Jet.OLEDB.4.0' für den Verbindungsserver 'txtsrv' kann nicht erstellt werden.

    Ich habe die Syntax zur Erstellung des Verbindungsservers von der Microsoft-Seite kopiert. Interessant ist, dass unter den Eingenschaften des erstellten Verbindungsservers der Anbieter "Microsoft OLE DB Provider for SQL Server" steht, obwohl ich doch "Microsoft.Jet.OLEDB.4.0" angebeben habe.

    Hast Du noch eine Idee?

    Gruss BigMS

    Dienstag, 3. Juli 2012 10:36
  • Hallo,

    habe jetzt das Problem gefunden! Da ich den SQL-Server 2012 benutze muss ich folgendes Skript angeben:

    --Create a linked server.
    EXEC sp_addlinkedserver txtsrv, N'Jet 12.0', 
       N'Microsoft.ACE.OLEDB.12.0',
       N'c:\data\distqry',
       NULL,
       N'Text';
    GO
    
    --Set up login mappings.
    EXEC sp_addlinkedsrvlogin txtsrv, FALSE;
    GO
    
    --List the tables in the linked server.
    EXEC sp_tables_ex txtsrv;
    GO
    
    Jetzt funktioniert es!

    Viele Grüss, BigMS

    Mittwoch, 4. Juli 2012 06:56