none
MSSQL 2016 Verbindungsserver, Fehler 53 RRS feed

  • Frage

  • Hallo zusammen,

    ich habe einen frisch installierten MSSQL 2016 Standard. Nun möchte ich einen Verbindungsserver anlegen. Verbunden werden soll zu einem MYSQL Server. Dazu habe ich den mysql ODBC Treiber runtergeladen und installiert, odbc-Datenquellen (64-Bit) geöffnet, System-DSN und dort die Datenquelle (Mysql Server) hinzugefügt. Verbindungstest funktioniert und ich bekomme die Datenbank zu sehen, die ich benötige.

    Nun gehe ich ins SSMS auf Serverobjects, Linked Servers, New Linked Server und fülle wie folgt aus, wobei REGmysql die Datenquelle ist, die ich im Schritt davor angelegt habe.

    Im Security Tab gebe ich unten noch den selben Datenbankaccount mit, den ich auch in der Datenquelle benutze.
    Dann auf ok und es erscheint folgender Fehler

    Named Pipes und TCP/IP sind im SQL Server Konfig Tool aktiviert. Windows Firewall ist deaktiviert. Die selbe Konfig funktioniert auf einem alten SQL2008...zumindest wüsste ich nicht, was ich anders gemacht hätte. Ich vermute, das noch irgendeine Einstellung auf dem MSSQL2016 falsch ist...

    Hat jemand eine Ahnung, was das noch sein kann?
    VG
    Frank

    Mittwoch, 31. Januar 2018 08:41

Antworten

  • Hallo Frank,

    Du hast für den Verbindungsserver den OleDB für SQL Server ausgewählt, damit kann man nur Verbindungen zu einem MS SQL Server herstellen; das funktioniert mit einem mySQL Server natürlich nicht. Du musst die OleDB Provider für mySQL installieren und den verwenden.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert jiri01 Mittwoch, 31. Januar 2018 09:09
    Mittwoch, 31. Januar 2018 08:55
  • Da du den ODBC-Treiber installiert hast, musst du als Standard-Treiber den OLEDB für ODBC auswählen.
    Wichtig ist, dass der SQL-Server natürlich selber ebenso in 64-Bit läuft.

    Allerdings habe ich bzgl. anderer SQL-Befehle außer "Select", also nur lesen, mit ODBC-Treibern nur Schwierigkeiten erlebt.
    Funktionieren tut dies meist nur mit einem echten OLEDB-Treiber der Datenbank.
    Desweiteren ist auch das Transaktionshandling ein Problem, da beim Schreiben in den Linked-Server "Distributed Transaction" unterstützt werden muss, sollte bereits eine Transaktion offen sein.
    Die meisten Treiber können dies nicht.

    Und ganz wichtig:
    Wenn man native im SQL mit "select F1, F2, ... from LinkedServer.Database.Schema.Table" arbeitet, verlangt der SQL-Server dass seine persönliche SQL-Syntax unterstützt wird. Dies führt ebenso zu Problemen.
    Besser ist hier auf jeden Fall die Verwendung vom "Select * from OpenQuery('LinkedServer', 'Native SQL').
    Für andere Befehle (Insert, Update, Delete, Call usw.) ist "EXEC" zu empfehlen statt native SQL-Server-SQL.
    • Als Antwort markiert jiri01 Mittwoch, 31. Januar 2018 09:33
    Mittwoch, 31. Januar 2018 09:18

Alle Antworten

  • Hallo Frank,

    Du hast für den Verbindungsserver den OleDB für SQL Server ausgewählt, damit kann man nur Verbindungen zu einem MS SQL Server herstellen; das funktioniert mit einem mySQL Server natürlich nicht. Du musst die OleDB Provider für mySQL installieren und den verwenden.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert jiri01 Mittwoch, 31. Januar 2018 09:09
    Mittwoch, 31. Januar 2018 08:55
  • Danke Olaf,

    wie kann man nur solche Tomaten auf den Augen haben? Microsoft OLE DB Provider for ODBC Drivers hätte ich auswählen müssen.Vielen Dank nochmal, das Du mich auf den richtigen Weg gebracht hast :)

    VG
    Frank

    Mittwoch, 31. Januar 2018 09:11
  • Da du den ODBC-Treiber installiert hast, musst du als Standard-Treiber den OLEDB für ODBC auswählen.
    Wichtig ist, dass der SQL-Server natürlich selber ebenso in 64-Bit läuft.

    Allerdings habe ich bzgl. anderer SQL-Befehle außer "Select", also nur lesen, mit ODBC-Treibern nur Schwierigkeiten erlebt.
    Funktionieren tut dies meist nur mit einem echten OLEDB-Treiber der Datenbank.
    Desweiteren ist auch das Transaktionshandling ein Problem, da beim Schreiben in den Linked-Server "Distributed Transaction" unterstützt werden muss, sollte bereits eine Transaktion offen sein.
    Die meisten Treiber können dies nicht.

    Und ganz wichtig:
    Wenn man native im SQL mit "select F1, F2, ... from LinkedServer.Database.Schema.Table" arbeitet, verlangt der SQL-Server dass seine persönliche SQL-Syntax unterstützt wird. Dies führt ebenso zu Problemen.
    Besser ist hier auf jeden Fall die Verwendung vom "Select * from OpenQuery('LinkedServer', 'Native SQL').
    Für andere Befehle (Insert, Update, Delete, Call usw.) ist "EXEC" zu empfehlen statt native SQL-Server-SQL.
    • Als Antwort markiert jiri01 Mittwoch, 31. Januar 2018 09:33
    Mittwoch, 31. Januar 2018 09:18