none
Linked Server zu MYSQL RRS feed

  • Frage

  • Ich habe gerade wieder eine harte Nuss (zumindestens für mich) zu knacken.

    folgendes ich möchte das mein SQL Server einen MYSQL Server ausliest. Also Treiber installiert und System DSN angelegt.

    Die heißt zweckhaft Nagios und hat ! keinerlei! Datenbank hinterlegt. Sprich ich möchte mit dem Linked Server alle DB´s die sich auf diesem System befinden ansprechen können. Sonst müsste ich ja jedesmal eine neue DSN machen.

    Dann schnell noch einen Linked Server hinterlegt und fertig! Der linked Server greift ebenfalls auf keinen Katalog zu sondern soll auch hier wieder alle Kataloge ansprechen können. Katalog damit mein Microsoft die Datenbank.

    und nun zum großen Desaster:

    select * from openquery([Linked_ohne_Katalog].[mysql],'Select * from procs_priv');
    Die Verbindung Linked-ohne_Katalog besitzt keinen hinterlegten Katalog deswegen gebe ich zusätzlich noch mysql (ist eine Datenbank)an und anschließend die Tabelle (proc_priv) das sollte doch funktionieren? 

    select * from openquery([Linkded-mit_Katalog],'Select * from procs_priv');  

    Die Verbindung Linked-mit_Katalog (wie der Name schon sagt) besitzt einen hinterlegten Katalog(die Datenbank mysql) deswegen klappt das auch! Aber auch nur wenn ich in der System DSN die Datenbank mysql hinterlege.

    Aber warum ist das so? wie muss ich es abfragen das es ohne hinterlegten Katalog und ohne hinterlegte Datenbank in der System DSN geht?

    Freitag, 13. Februar 2015 11:05

Antworten

  • Hallo,

    nach längeren suchen und ausprobieren habe ich nun die passende Konfig gefunden.

    In der System DSN und im Linked Server muss keine Datenbank bzw. Katalog hinterlegt sein. Der Linked Server zeigt alle Datenbanken die der Nutzer sehen darf. 

     


    select * from openquery([Linked_ohne_Katalog],'Select * from [mysql].procs_priv');


    Montag, 16. Februar 2015 16:05

Alle Antworten

  • Hi,

    siehst Du denn im SSMS alle Datenbanken, wenn Du den Verbindungsserver öffnest?

    Falls ja, probier mal, folgendes Statement direkt im SSMS abzusetzen:

    SELECT *
    FROM   [Verbindungsserver].[Datenbank].[Schema].[Tabelle]
    Die Werte musst Du natürlich anpassen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community



    Freitag, 13. Februar 2015 11:21
    Moderator
  • select * from openquery([Linked_ohne_Katalog].[mysql],'Select * from procs_priv');

    Hallo Christian,

    der SQL Server kennt nur den LinkedServer, aber nicht die Datenbanken, von daher kannst du im SQL Server seitigem Teil der Abfrage auch nicht den Datenbanknamen angeben. Wenn es unter MySQL genauso funktioniert (ich kenne MySQL nicht so) wie unter SQL Server, dann musst Du den Datenbanknamen in die MySQL Abfrage verlagern =>

    select * from openquery([Linked_ohne_Katalog],'Select * from mysql..procs_priv');


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 13. Februar 2015 11:39
  • Hallo,

    nach längeren suchen und ausprobieren habe ich nun die passende Konfig gefunden.

    In der System DSN und im Linked Server muss keine Datenbank bzw. Katalog hinterlegt sein. Der Linked Server zeigt alle Datenbanken die der Nutzer sehen darf. 

     


    select * from openquery([Linked_ohne_Katalog],'Select * from [mysql].procs_priv');


    Montag, 16. Februar 2015 16:05