Création de l'URL de connexion
La forme générale d'une URL de connexion est
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
où :
jdbc:sqlserver:// (obligatoire) constitue le sous-protocole et sa constante.
serverName (facultatif) correspond à l'adresse du serveur auquel se connecter. Il peut s'agir d'une adresse DNS ou IP, de localhost ou de 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 à connecter à serverName. Si cette valeur n'est pas spécifiée, une connexion à l'instance par défaut est établie.
portNumber (facultatif) est le port à connecter à serverName. La valeur par défaut est 1433. Pour l'utiliser comme valeur par défaut, vous ne devez pas spécifier le port, ni le signe « : » qui précède, dans l'URL.
Notes
Pour des performances de connexion optimales, vous devez définir la valeur de 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 un portNumber et un instanceName sont utilisés, le portNumber aura la priorité et l'instanceName sera ignoré.
property (facultatif) indique une ou plusieurs propriétés de connexion. 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 ne peuvent être séparées que par 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.
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;user=MyUserName;password=*****;
Notes
Bien que l'exemple précédent utilise un nom d'utilisateur et un mot de passe dans la chaîne de connexion, si vous exécutez votre application sur un système d'exploitation Windows, vous devez utiliser une sécurité intégrée, pour mieux sécuriser. Pour plus d'informations, consultez la section Connexion avec une authentification intégrée plus loin dans cette rubrique.
Connexion à la base de données par défaut sur l'ordinateur local à l'aide d'une authentification intégrée :
jdbc:sqlserver://localhost;integratedSecurity=true;
Connexion à une base de données nommée sur un serveur distant :
jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;
Connexion au port par défaut du serveur distant :
jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks;integratedSecurity=true;
Connexion en spécifiant un nom d'application personnalisé :
jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp;
Instances SQL Server nommées et multiples
SQL Server permet d'installer plusieurs instances de bases de données par serveur. Chaque instance est identifiée par un nom spécifique. Pour établir une connexion avec une instance nommée de SQL Server, vous pouvez soit spécifier le numéro de port de l'instance nommée (recommandé), soit spécifier le nom d'instance comme propriété d'URL JDBC ou propriété 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. Consultez les exemples suivants :
Pour utiliser un numéro de port, procédez comme suit :
jdbc:sqlserver://localhost:1433;integratedSecurity=true;<more properties as required>;
Pour utiliser une propriété d'URL JDBC, procédez comme suit :
jdbc:sqlserver://localhost;instanceName=instance1;integratedSecurity=true;<more properties as required>;
Échappement de valeurs dans l'URL de connexion
Il se peut que vous deviez procéder à l'échappement de certaines parties des valeurs d'URL de connexion en raison de l'inclusion de caractères spéciaux tels que des espaces, des points-virgules ou des points d'interrogation. Le pilote JDBC prend en charge l'échappement de ces caractères s'ils sont placés entre accolades. Par exemple, {;} échappe un point-virgule.
Les valeurs d'échappement peuvent contenir des caractères spéciaux (« = », « ; », « [] » ou un espace) mais ne peuvent pas contenir d'accolades. Les valeurs qui doivent être échappées et qui contiennent des accolades doivent être ajoutées à une collection de propriétés.
Notes
Un espace vide entre les accolades est un littéral qui n'est pas supprimé.
Connexion avec une authentification intégrée
Le pilote JDBC prend en charge l'utilisation d'une authentification intégrée de type 2 sur les systèmes d'exploitation Windows via la propriété de chaîne de connexion integratedSecurity. Pour utiliser l'authentification intégrée, copiez le fichier sqljdbc_auth.dll dans un répertoire sur le chemin du système Windows de l'ordinateur sur lequel le pilote JDBC est installé.
Les fichiers sqljdbc_auth.dll sont installés à l'emplacement suivant :
<répertoire d'installation>\sqljdbc_<version>\<langue>\auth\
Notes
Si vous exécutez une machine virtuelle Java (JVM) 32 bits, utilisez le fichier sqljdbc_auth.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 (JVM) 64 bits sur un processeur x64, utilisez le fichier sqljdbc_auth.dll dans le dossier x64. Si vous exécutez une machine virtuelle JVM 64 bits sur un processeur Itanium, utilisez le fichier sqljdbc_auth.dll dans le dossier IA64.
Vous pouvez également définir la propriété système java.libary.path afin de spécifier le répertoire du fichier sqljdbc_auth.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 SQL Server JDBC Driver\sqljdbc_<version>\enu\auth\x86
Notes
Le pilote JDBC ne prend pas en charge l'authentification intégrée lorsqu'il s'exécute sur des systèmes d'exploitation non Windows. Le pilote n'offre pas non plus de fonctionnalités visant à fournir des informations d'authentification Windows, par exemple le nom d'utilisateur et le mot de passe, lors de la connexion à SQL Server à partir de systèmes d'exploitation non Windows. Dans ces cas-là, les applications doivent utiliser l'authentification SQL Server à la place.
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 serverName initiale, telle que jdbc :sqlserver://serverName, n'est pas prise en charge pour les adresses IPv6 figurant dans des chaînes de connexion. L'utilisation d'un nom au lieu d'une adresse IPv6 brute pour serverName fonctionne dans tous les cas dans 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;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://;integratedSecurity=true;", pro);