Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verbinden von SQL Server mit einer Java-Datenbank

SQL Server kann mithilfe eines Verbindungsservers eine Verbindung mit einer Nicht-SQL Server-Datenbank herstellen. Der Linked-Server-Mechanismus kann eine Middleware verwenden, die als ODBC-Treiber bekannt ist, um SQL Server mit Backends von Drittanbietern wie Oracle, MySQL und Salesforce zu verbinden.

Das Äquivalent eines ODBC-Treibers für eine Java-Datenbank ist ein JDBC-Treiber. Microsoft stellt keine Verbindungsserverschnittstelle bereit, die JDBC unterstützt. Stattdessen müssen Sie die ODBC-Verbindungsserverschnittstelle (Microsoft OLE DB-Anbieter für ODBC-Treiber) mit einem ODBC-Treiber verwenden, der zwischen ODBC und JDBC übersetzen kann. Beispielsweise das ODBC-JDBC-Gateway. Das ODBC-JDBC-Gateway verbindet eine Anwendung, die ODBC verwendet, mit einer Datenbank, auf die über JDBC zugegriffen werden kann. Für die Anwendung ist das ODBC-JDBC-Gateway ein ODBC-Treiber. Für den JDBC-Treiber ist das ODBC-JDBC-Gateway eine Java-Anwendung.

Verwenden Sie das ODBC-JDBC-Gateway für:

  • Verwenden Sie einen Verbindungsserver, um mit JDBC-Daten zu arbeiten, als ob Sie mit Daten arbeiten würden, die in einer SQL Server-Tabelle gespeichert sind.
  • Integrieren Sie JDBC-Daten mit SQL Server mithilfe von SQL Server Integration Services (SSIS).

Installieren und Lizenzieren des ODBC-JDBC-Gateways

  1. Laden Sie das Windows ODBC-JDBC-Gateway herunter.
  2. Installieren und lizenzieren Sie das ODBC-JDBC-Gateway auf dem Windows-Rechner, auf dem SQL Server / der JDBC-Treiber installiert sind.

    Installationsanweisungen finden Sie in der ODBC-JDBC-Gateway-Dokumentation.

Konfigurieren einer ODBC-Datenquelle

Bevor Sie das ODBC-JDBC-Gateway verwenden können, um Ihre ODBC-Anwendung mit JDBC zu verbinden, müssen Sie eine System-ODBC-Datenquelle konfigurieren. Eine ODBC-Datenquelle speichert die Verbindungsdetails für die Zieldatenbank.

Sie konfigurieren ODBC-Datenquellen im ODBC-Administrator, der in Windows enthalten ist. Es gibt zwei Versionen von ODBC Administrator, eine 32-Bit-Version und eine 64-Bit-Version. Sie müssen die 32-Bit-Version ausführen, wenn Ihre SQL Server-Instanz 32-Bit ist. Sie müssen die 64-Bit-Version ausführen, wenn Ihre SQL Server-Instanz 64-Bit ist.

Um herauszufinden, welche Version von SQL Server Sie haben, stellen Sie eine Verbindung zu Ihrer SQL Server-Instanz her und führen Sie dann diese SQL-Anweisung aus:

wählen Sie SERVERPROPERTY('edition') aus

Um den 32-Bit-ODBC-Administrator auszuführen, geben Sie im Windows-Dialogfeld „Ausführen“ Folgendes ein:

%windir%\syswow64\odbcad32.exe

Um den 64-Bit-ODBC-Administrator auszuführen, geben Sie im Windows-Dialogfeld „Ausführen“ Folgendes ein:

odbcad32.exe

Verwenden Sie den ODBC-Administrator, um Ihre ODBC-JDBC-Gateway-Datenquelle zu erstellen.

Erstellen einer ODBC-JDBC-Gateway-ODBC-Datenquelle

  1. Wählen Sie die Registerkarte „System-DSN“ und dann „Hinzufügen“.
  2. Wählen Sie im Dialogfeld "Neue Datenquelle erstellen" die Option "ODBC-JDBC-Gateway" und dann "Fertig stellen".
  3. Füllen Sie das Dialogfeld ODBC-JDBC Gateway DSN Setup aus:
    Setting Beschreibung
    DSN OJG_DSN
    Benutzername Der Benutzername für Ihr Java-Backend, falls erforderlich.
    Passwort Das Passwort für den Benutzernamen.
    Fahrerklasse Schauen Sie in der Dokumentation Ihres JDBC-Treibers nach, welchen Wert Sie hier eingeben müssen.
    Klassenpfad Verwenden Sie die Schaltfläche „Hinzufügen“, um zu Ihrer JAR-/ZIP-Datei mit dem JDBC-Treiber zu navigieren.
    URL Die JDBC-URL, die von Ihrem JDBC-Treiber verwendet wird, um eine Verbindung zum Java-Backend herzustellen. Informationen zur zu verwendenden Syntax finden Sie in der Dokumentation Ihres JDBC-Treibers.
  4. Verwenden Sie die Test-Schaltfläche, um zu überprüfen, ob Sie erfolgreich eine Verbindung zum Java-Backend herstellen können.

Beispiel:Abrufen von JDBC-Daten mithilfe eines Verbindungsservers

  1. Stellen Sie in Microsoft SQL Server Management Studio eine Verbindung zu der SQL Server-Instanz her, für die Sie den Verbindungsserver erstellen möchten.

    Sie müssen sich mit einem Konto anmelden, das Mitglied der festen Serverrolle „sysadmin“ von SQL Server ist, um einen Verbindungsserver zu erstellen.

  2. Klicken Sie mit der rechten Maustaste auf Serverobjekte. Wählen Sie im Popup-Menü Neu> Verbundener Server.
  3. Geben Sie im Feld Linked server "OJG" ein.
  4. Wählen Sie aus der Anbieterliste Microsoft OLE DB-Anbieter für ODBC-Treiber aus.
  5. Geben Sie im Feld Datenquelle den Namen Ihrer ODBC-JDBC-Gateway-ODBC-Datenquelle ein und wählen Sie dann OK.

    SQL Server verifiziert den Verbindungsserver durch Testen der Verbindung.

    • Wenn Sie die Fehlermeldung "Der angegebene Treiber konnte aufgrund des Systemfehlers 126 nicht geladen werden:Das angegebene Modul konnte nicht gefunden werden" erhalten, wählen Sie Ja, wenn Sie gefragt werden, ob Sie den Verbindungsserver behalten möchten. Sie müssen Ihre SQL Server-Instanz neu starten, bevor Sie den Verbindungsserver verwenden können. Wenn SQL Server bereits ausgeführt wurde, als Sie das ODBC-JDBC-Gateway installiert haben, verfügt es nicht über die neueste Version der Umgebungsvariable System PATH. Das ODBC-JDBC-Gateway-Setup-Programm fügt dem System PATH Einträge für den Treiber hinzu. Durch einen Neustart der Instanz werden diese Änderungen für SQL Server verfügbar, sodass das ODBC-JDBC-Gateway geladen werden kann.
    • Wenn Sie bei der Angabe der ODBC-JDBC-Gateway-Datenquelle einen Fehler gemacht haben, erhalten Sie den Fehler „Datenquellenname nicht gefunden und kein Standardtreiber angegeben. Wenn Sie diesen Fehler erhalten, wählen Sie Nein, wenn Sie gefragt werden, ob der Verbindungsserver beibehalten werden soll und bearbeiten Sie den Wert im Feld Datenquelle.
  6. Sie können Ihre JDBC-Daten entweder abfragen, indem Sie Folgendes verwenden:
    • Vierteiliger Tabellenname in einer verteilten Abfrage.

      Ein vierteiliger Tabellenname hat das Format:

      Servername .[Datenbankname ].[schema_name ].Tabellenname .

      Abhängig von Ihrem Java-Backend müssen Sie den Datenbanknamen und das Schema weglassen. Zum Beispiel:

      SELECT * from OJG...my_table
    • Pass-Through-Abfrage in einer OPENQUERY-Funktion. Zum Beispiel:
      SELECT * FROM OPENQUERY(OJG, 'SELECT * FROM my_table')

      SQL Server sendet Pass-Through-Abfragen als nicht interpretierte Abfragezeichenfolgen an das ODBC-JDBC-Gateway. Dies bedeutet, dass SQL Server keinerlei Logik auf die Abfrage anwendet oder versucht abzuschätzen, was diese Abfrage bewirken wird.