Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Connexion de SQL Server à une base de données Java

SQL Server peut se connecter à une base de données non-SQL Server à l'aide d'un serveur lié. Le mécanisme de serveur lié peut utiliser un middleware connu sous le nom de pilote ODBC pour connecter SQL Server à des backends tiers tels qu'Oracle, MySQL et Salesforce.

L'équivalent d'un pilote ODBC pour une base de données Java est un pilote JDBC. Microsoft ne fournit pas d'interface de serveur lié prenant en charge JDBC. Au lieu de cela, vous devez utiliser l'interface de serveur lié ODBC (fournisseur Microsoft OLE DB pour les pilotes ODBC) avec un pilote ODBC capable de traduire entre ODBC et JDBC. Par exemple, la passerelle ODBC-JDBC. La passerelle ODBC-JDBC connecte une application qui utilise ODBC à une base de données accessible via JDBC. Pour l'application, la passerelle ODBC-JDBC est un pilote ODBC. Pour le pilote JDBC, la passerelle ODBC-JDBC est une application Java.

Utilisez la passerelle ODBC-JDBC pour :

  • Utilisez un serveur lié pour travailler avec des données JDBC, comme si vous travailliez avec des données stockées dans une table SQL Server.
  • Intégrez les données JDBC à SQL Server à l'aide de SQL Server Integration Services (SSIS).

Installation et licence de la passerelle ODBC-JDBC

  1. Téléchargez la passerelle Windows ODBC-JDBC.
  2. Installez et autorisez la passerelle ODBC-JDBC sur la machine Windows sur laquelle SQL Server/le pilote JDBC sont installés.

    Pour obtenir des instructions d'installation, consultez la documentation de la passerelle ODBC-JDBC.

Configuration d'une source de données ODBC

Avant de pouvoir utiliser la passerelle ODBC-JDBC pour connecter votre application ODBC à JDBC, vous devez configurer une source de données ODBC système. Une source de données ODBC stocke les détails de connexion pour la base de données cible.

Vous configurez les sources de données ODBC dans l'administrateur ODBC, qui est inclus avec Windows. Il existe deux versions d'ODBC Administrator, une 32 bits et une 64 bits. Vous devez exécuter la version 32 bits si votre instance SQL Server est 32 bits. Vous devez exécuter la version 64 bits si votre instance SQL Server est 64 bits.

Pour savoir quelle version de SQL Server vous possédez, connectez-vous à votre instance SQL Server, puis exécutez cette instruction SQL :

sélectionnez SERVERPROPERTY('edition')

Pour exécuter l'administrateur ODBC 32 bits, dans la boîte de dialogue Exécuter de Windows, saisissez :

%windir%\syswow64\odbcad32.exe

Pour exécuter l'administrateur ODBC 64 bits, dans la boîte de dialogue Exécuter de Windows, tapez :

odbcad32.exe

Utilisez l'administrateur ODBC pour créer votre source de données de passerelle ODBC-JDBC.

Création d'une source de données ODBC de passerelle ODBC-JDBC

  1. Choisissez l'onglet DSN système, puis choisissez Ajouter.
  2. Dans la boîte de dialogue Créer une nouvelle source de données, choisissez Passerelle ODBC-JDBC, puis Terminer.
  3. Renseignez la boîte de dialogue Configuration du DSN de la passerelle ODBC-JDBC :
    Paramètre Description
    DSN OJG_DSN
    Nom d'utilisateur Le nom d'utilisateur de votre backend Java, si nécessaire.
    Mot de passe Le mot de passe pour le nom d'utilisateur.
    Classe de conducteur Reportez-vous à la documentation de votre pilote JDBC pour la valeur que vous devez saisir ici.
    Chemin de classe Utilisez le bouton Ajouter pour accéder au fichier JAR/ZIP de votre pilote JDBC.
    URL L'URL JDBC utilisée par votre pilote JDBC pour se connecter au backend Java. Reportez-vous à la documentation de votre pilote JDBC pour la syntaxe que vous devez utiliser.
  4. Utilisez le bouton Test pour vérifier que vous pouvez vous connecter avec succès au backend Java.

Exemple :Récupérer des données JDBC à l'aide d'un serveur lié

  1. Dans Microsoft SQL Server Management Studio, connectez-vous à l'instance SQL Server sur laquelle vous souhaitez créer le serveur lié.

    Vous devez vous connecter avec un compte membre du rôle de serveur fixe sysadmin SQL Server pour créer un serveur lié.

  2. Cliquez avec le bouton droit sur Objets serveur. Dans le menu contextuel, choisissez Nouveau > Serveur lié.
  3. Dans la zone Serveur lié, saisissez "OJG".
  4. Dans la liste Fournisseur, choisissez Fournisseur Microsoft OLE DB pour les pilotes ODBC.
  5. Dans la zone Source de données, saisissez le nom de votre source de données ODBC ODBC-JDBC Gateway, puis choisissez OK.

    SQL Server vérifie le serveur lié en testant la connexion.

    • Si vous obtenez l'erreur "Le pilote spécifié n'a pas pu être chargé en raison de l'erreur système 126 :le module spécifié est introuvable", choisissez Oui lorsque vous êtes invité à conserver le serveur lié. Vous devez redémarrer votre instance SQL Server avant de pouvoir utiliser le serveur lié. Si SQL Server était déjà en cours d'exécution lorsque vous avez installé la passerelle ODBC-JDBC, il n'aura pas la dernière version de la variable d'environnement System PATH. Le programme d'installation de la passerelle ODBC-JDBC ajoute des entrées pour le pilote au PATH système. Le redémarrage de l'instance rend ces modifications disponibles pour SQL Server, ce qui lui permet de charger la passerelle ODBC-JDBC.
    • Si vous avez fait une erreur lors de la spécification de la source de données de la passerelle ODBC-JDBC, vous obtenez l'erreur "Nom de la source de données introuvable et aucun pilote par défaut spécifié. Si vous obtenez cette erreur, choisissez Non lorsque vous êtes invité à conserver le serveur lié et modifiez la valeur dans la zone Source de données.
  6. Vous pouvez interroger vos données JDBC en utilisant :
    • Nom de table en quatre parties dans une requête distribuée.

      Un nom de table en quatre parties a le format :

      nom_serveur .[nom_base_données ].[nom_schéma ].nom_table .

      En fonction de votre backend Java, vous devez omettre le nom et le schéma de la base de données. Par exemple :

      SELECT * from OJG...my_table
    • Requête directe dans une fonction OPENQUERY. Par exemple :
      SELECT * FROM OPENQUERY(OJG, 'SELECT * FROM my_table')

      SQL Server envoie des requêtes directes sous forme de chaînes de requête non interprétées à la passerelle ODBC-JDBC. Cela signifie que SQL Server n'applique aucun type de logique à la requête ou n'essaie pas d'estimer ce que cette requête fera.