Generar URL de conexión

El formato general de la URL de conexión es

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

donde:

  • jdbc:sqlserver:// (obligatorio) es el subprotocolo y es constante.

  • serverName (opcional) es la dirección del servidor con el que se establece la conexión. Puede ser un DNS o una dirección IP o bien un host local o 127.0.0.1 para el equipo local. Si no se especifica en la URL de conexión, es necesario especificar el nombre del servidor en la colección de propiedades.

  • instanceName (opcional) es la instancia para establecer la conexión con serverName. Si no se especifica, se establece una conexión con la instancia predeterminada.

  • portNumber (opcional) es el puerto para establecer la conexión con serverName. El valor predeterminado es 1433. Si usa el valor predeterminado, no es necesario especificar el puerto ni el signo ":" precedente en la dirección URL.

    Nota

    Para obtener un rendimiento óptimo de la conexión, debe establecer portNumber al conectar con una instancia con nombre. De este modo se evita un ciclo de ida y vuelta en el servidor para determinar el número de puerto. Si se usan portNumber e instanceName, portNumber tiene prioridad e instanceName se omite.

  • property (opcional) es una o más propiedades de conexión de la opción. Para obtener más información, vea Establecer las propiedades de conexión. Se puede especificar cualquier propiedad de la lista. Las propiedades solo se pueden delimitar mediante punto y coma (";") y no se pueden duplicar.

Advertencia

Por motivos de seguridad, debe evitar la generación de direcciones URL de conexión basadas en la entrada del usuario. Debe especificar solo el nombre del servidor y el controlador de la URL. Para los valores de nombre y contraseña, utilice las colecciones de propiedades de conexión. Para obtener más información acerca de la seguridad de las aplicaciones JDBC, consulte Proteger las aplicaciones del controlador JDBC.

Ejemplos de conexión

Conexión a la base de datos predeterminada del equipo local con un nombre de usuario y una contraseña:

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

Nota

Aunque en el ejemplo anterior se usan un nombre de usuario y una contraseña en la cadena de conexión, si ejecuta la aplicación en un sistema operativo Windows, debe usar la seguridad integrada dado que resulta más seguro. Para obtener más información, consulte la sección sobre conexión con la autenticación integrada más adelante en este tema.

Conexión con la base de datos predeterminada del equipo local con autenticación integrada:

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

Conexión a la base de datos con nombre de un servidor remoto:

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

Conexión en el puerto predeterminado con el servidor remoto:

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

Conectar mediante la especificación de un nombre de aplicación personalizada:

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

Instancias de SQL múltiples y con nombre

SQL Server permite la instalación de varias instancias de base de datos por servidor. Cada instancia se identifica con un nombre concreto. Para conectarse a una instancia con nombre de SQL Server, puede especificar el número de puerto de la instancia con nombre (opción preferida) o bien el nombre de instancia como propiedad de URL de JDBC o propiedad datasource. Si no se especifica ningún nombre de instancia o propiedad de número de puerto, se crea una conexión a la instancia predeterminada. Vea los ejemplos siguientes:

Para usar un número de puerto, haga lo siguiente:

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

Para usar una propiedad URL de JDBC, haga lo siguiente:

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

Escape de valores en la URL de conexión

Puede que tenga que aplicar un escape a determinadas partes de los valores URL de conexión debido a la inclusión de caracteres especiales como espacios, puntos y comas, y comillas. El controlador JDBC admite el escape de estos caracteres si se incluyen entre llaves. Por ejemplo, {;} aplica el escape al punto y coma.

Los valores de escape pueden contener caracteres especiales (sobre todo "=", ";", "[]'" y espacio), pero no pueden contener llaves. Los valores a los que se debe aplicar el escape y contengan llaves se deben agregar a la colección de propiedades.

Nota

El espacio en blanco dentro de las llaves es literal y no se reduce.

Conexión con la autenticación integrada

El controlador JDBC admite el uso de la autenticación integrada de tipo 2 en los sistemas operativos Windows mediante la propiedad de cadena de conexión integratedSecurity. Para usar la autenticación integrada, copie el archivo sqljdbc_auth.dll en un directorio de la ruta del sistema de Windows en que esté instalado el controlador JDBC.

Los archivos sqljdbc_auth.dll se instalan en la siguiente ubicación:

<directorio de instalación>\sqljdbc_<version>\<language>\auth\

Nota

Si está ejecutando una máquina virtual Java de (JVM, Java Virtual Machine) 32 bits, utilice el archivo sqljdbc_auth.dll en la carpeta x86, aun cuando la versión del sistema operativo sea la x64. Si está ejecutando una JVM de 64 bits en un procesador x64, utilice el archivo sqljdbc_auth.dll de la carpeta x64. Si está ejecutando una JVM de 64 bits en un procesador Itanium, utilice el archivo sqljdbc_auth.dll de la carpeta IA64.

Alternativamente, puede especificar la propiedad del sistema java.libary.path para especificar el directorio de sqljdbc_auth.dll. Por ejemplo, si el controlador JDBC está instalado en el directorio predeterminado, puede especificar la ubicación de la DLL con el siguiente argumento de máquina virtual (VM) si la aplicación de Java se ha iniciado:

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

Nota

El controlador JDBC no admite la autenticación integrada cuando el controlador se ejecuta en sistemas operativos que no son de Windows. El controlador no proporciona funcionalidad para proporcionar las credenciales de autenticación de Windows, como el nombre de usuario y la contraseña al conectar con SQL desde sistemas operativos que no sean Windows. En tales casos, las aplicaciones deben usar la autenticación de SQL Server.

Conectar con direcciones IPv6

El controlador JDBC admite el uso de direcciones IPv6 con la colección de propiedades de conexión y con la propiedad de cadena de conexión serverName. El valor serverName inicial, como jdbc:sqlserver://serverName, no se admite para las direcciones IPv6 de las cadenas de conexión. El uso de un nombre para serverName en lugar de una dirección IPv6 sin formato funciona en todos los casos en la conexión. En los siguientes ejemplos se proporciona más información.

Para usar la propiedad serverName

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

Para usar la colección de propiedades

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);

Vea también

Otros recursos

Conectar SQL Server con el controlador JDBC