Création de l’URL de connexion

Télécharger le pilote JDBC

La forme générale d'une URL de connexion est

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]

où :

  • jdbc:sqlserver:// (exigé) est connu comme le sous-protocole et sa constante.

  • serverName (facultatif) correspond à l'adresse du serveur auquel se connecter. Il peut s'agir d'un nom DNS ou d'une adresse IP, ou encore de localhost ou 127.0.0.1 pour l'ordinateur local. S'il n'est pas spécifié dans l'URL de connexion, le nom du serveur doit être spécifié dans la collection de propriétés.

  • instanceName (facultatif) est l'instance à laquelle se connecter sur serverName. Si cette valeur n'est pas spécifiée, une connexion à l'instance par défaut est établie.

  • portNumber (facultatif) est le port auquel se connecter sur serverName. Par défaut, il s’agit de 1433. Si vous utilisez le port par défaut, vous ne devez pas spécifier dans l'URL le port ni le signe antécédent : dans l'URL.

    Note

    Pour l'analyse des performances de connexion optimales, vous devez définir la valeur portNumber lors de la connexion à une instance nommée. Cela permet d'éviter une boucle avec le serveur pour déterminer le numéro du port. Si portNumber et instanceName sont utilisés, la valeur portNumber aura précédence et la valeur instanceName sera ignorée.

  • propriété (facultatif) correspond à une ou plusieurs propriétés de connexion facultatives. Pour plus d'informations, consultez Définition des propriétés de connexion. Vous pouvez spécifier n'importe quelle propriété de la liste. Les propriétés peuvent uniquement être séparées en utilisant des points-virgules (;) et ne peuvent pas être dupliquées.

Attention

Pour des raisons de sécurité, il convient d'éviter de créer les URL de connexion en se basant sur des entrées utilisateur. Il est préférable de spécifier uniquement le nom du serveur et le pilote dans l'URL. Pour les valeurs de nom d'utilisateur et de mot de passe, utilisez des collections de propriétés de connexion. Pour plus d'informations sur la sécurité de vos applications JDBC, consultez Sécurisation des applications de pilote JDBC.

Propriétés de connexion

Pour obtenir la liste détaillée des propriétés qui peuvent être définies dans la chaîne de connexion, consultez Définir les propriétés de connexion.

Exemples de connexion

Connectez-vous à la base de données par défaut sur l'ordinateur local à l'aide d'un nom d'utilisateur et d'un mot de passe :

jdbc:sqlserver://localhost;encrypt=true;user=MyUserName;password=*****;

Note

Bien que l'exemple précédent utilise un nom d'utilisateur et un mot de passe dans la chaîne de connexion, utilisez une sécurité intégrée, car elle est plus sécurisée. Pour plus d'informations, référez-vous à la section Connexion avec une authentification intégrée plus loin dans cet article.

La chaîne de connexion suivante affiche un exemple d'aide et d'astuces relatives à la connexion à une base de données SQL Server en utilisant l'authentification intégrée et de Kerberos à partir d'une application qui s'exécute sur tout système d'exploitation pris en charge par le pilote JDBC de Microsoft pour SQL Server :

jdbc:sqlserver://;servername=server_name;encrypt=true;integratedSecurity=true;authenticationScheme=JavaKerberos
  • Connexion à la base de données par défaut sur l'ordinateur local à l'aide d'une authentification intégrée :

    jdbc:sqlserver://localhost;encrypt=true;integratedSecurity=true;

  • Connexion à une base de données nommée sur un serveur distant :

    jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;

  • Connexion au port par défaut du serveur distant :

    jdbc:sqlserver://localhost:1433;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;

  • Connexion en spécifiant un nom d'application personnalisé :

    jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp;

Instances SQL Server nommées et multiples

SQL Server autorise l'installation de plusieurs instances de base de données par serveur. Chaque instance peut être identifiée par un nom spécifique. Pour vous connecter à une instance nommée de SQL Server, vous pouvez spécifier le numéro de port de l'instance nommée (recommandé). Vous pouvez également spécifier le nom de l'instance comme propriété d'URL JDBC ou propriété de datasource. Si aucune propriété de nom d'instance ou de numéro de port n'est spécifiée, une connexion à l'instance par défaut est établie. Regardez les exemples suivants :

  • Pour spécifier un numéro de port, utilisez le format suivant :

    jdbc:sqlserver://localhost:1433;encrypt=true;integratedSecurity=true;<more properties as required>;

  • Pour utiliser une propriété d’URL JDBC, utilisez le format suivant :

    jdbc:sqlserver://localhost;encrypt=true;instanceName=instance1;integratedSecurity=true;<more properties as required>;

Échappement de valeurs dans l'URL de connexion

Il se peut que vous deviez protéger avec un caractère d’échappement certaines parties des valeurs de l’URL de connexion si elles comportent des caractères spéciaux (espaces, points-virgules, guillemets, etc.). Le pilote JDBC prend en charge l’échappement de ces caractères entre accolades. Par exemple, {;} ne contient pas de point-virgule.

Avant la version 8.4, les valeurs échappées peuvent contenir des caractères spéciaux, (en particulier =, ;, [] ou un espace), mais pas d'accolades. Les valeurs qui doivent être échappées et qui contiennent des accolades doivent être ajoutées à une collection de propriétés.

Dans la version 8.4 et versions ultérieures, les valeurs échappées peuvent contenir des caractères spéciaux, y compris des accolades. Toutefois, les accolades fermantes doivent être placées dans une séquence d’échappement. Par exemple, avec le mot de passe pass";{}word, une chaîne de connexion doit échapper le mot de passe comme suit :

jdbc:sqlserver://localhost;encrypt=true;username=MyUsername;password={pass";{}}word};

Note

Un espace vide entre les accolades est un littéral qui n'est pas supprimé.

Connexion avec une authentification intégrée sous Windows

Le pilote JDBC prend en charge l’utilisation de l’authentification intégrée de type 2 sur les systèmes d’exploitation Windows au moyen de la propriété de chaîne de connexion integratedSecurity. Pour utiliser l'authentification intégrée, copiez le fichier mssql-jdbc_auth-<version>-<arch>.dll dans un annuaire sur le chemin d'accès du système Windows de l'ordinateur sur lequel le pilote JDBC est installé.

Les fichiers mssql-jdbc_auth-<version>-<arch>.dll sont installés à l'emplacement suivant :

<installation directory>\sqljdbc_<version>\<language>\auth\

En ce qui concerne les systèmes d'exploitation pris en charge par le pilote JDBC de Microsoft pour SQL Server, référez-vous à Utilisation de l'authentification intégrée Kerberos pour se connecter à SQL Server afin d'obtenir la description d'une caractéristique ajoutée au pilote JDBC 4.0 de Microsoft pour SQL Server. Cette commande autorise la connexion d'une application à une base de données en utilisant l'authentification intégrée avec le Kerberos de type 4.

Note

Si vous exécutez une machine virtuelle Java 32 bits, utilisez le fichier mssql-jdbc_auth-<version>-<arch>.dll dans le dossier x86, même si la version du système d’exploitation est x64. Si vous exécutez une machine virtuelle Java 64 bits sur un processeur x64, utilisez le fichier mssql-jdbc_auth-<version>-<arch>.dll dans le dossier x64.

Vous pouvez aussi définir la propriété système java.library.path pour spécifier le répertoire du fichier mssql-jdbc_auth-<version>-<arch>.dll. Par exemple, si le pilote JDBC est installé dans le répertoire par défaut, vous pouvez spécifier l'emplacement de la DLL à l'aide de l'argument de machine virtuelle suivant lors du démarrage de l'application Java :

-Djava.library.path=C:\Microsoft JDBC Driver 6.4 for SQL Server\sqljdbc_<version>\enu\auth\x86

Connexion à l'aide d'adresses IPv6

Le pilote JDBC prend en charge l'utilisation d'adresses IPv6 avec la collection de propriétés de connexion et avec la propriété de chaîne de connexion serverName. La valeur initiale de serverName, comme jdbc:sqlserver://serverName, n'est pas prise en charge pour les adresses IPv6 dans des chaînes de connexion. L'utilisation d'un nom pour serverName au lieu d'une adresse IPv6 brute, fonctionne dans tous les cas pour la connexion. Les exemples suivants fournissent des informations complémentaires.

  • Pour utiliser la propriété serverName :

    jdbc:sqlserver://;serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1;encrypt=true;integratedSecurity=true;

  • Pour utiliser la collection de propriétés :

    Properties pro = new Properties();

    pro.setProperty("serverName", "serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1");

    Connection con = DriverManager.getConnection("jdbc:sqlserver://;encrypt=true;integratedSecurity=true;", pro);

Voir aussi