2015/07/27

DEFAULT INSTANCE, NAMED INSTANCE

PROBLEMA
En algunas ocasiones será necesario instalar más de una instancia SQL SERVER en nuestro servidor, uno de los pasos que tenemos que tomar en cuenta es que debemos identificar a que instancia nos estamos conectando. Lo primero que debemos identificar es cuantas instancias tenemos instaladas, que puerto están utilizando para escuchar, si es una DEFAULT INSTANCE o una NAMED INSTANCE, entre algunas otras.

ALGO DE TEORIA
Alguna de las características de ambas son las siguientes:

DEFAULT INSTANCE
  • Por default se conecta a través del puerto 1433, puede ser otro, solo es necesario configurarlo.
  • No es necesario especificar el número de puerto al momento de realizar la conexión, siempre y cuando sea el puerto 1433.
  • No es necesario especificar el nombre de la instancia, mientras utilice el puerto 1433.
  • El nombre de dicha instancia se creará como MSSQLSERVER.
  • Solo puede haber una por cada servidor.

NAMED INSTANCE
  • Se crean usando un puerto dinámico que no esté siendo usado por el servidor, puede ser modificado inclusive utilizando el puerto 1433, tomando en cuenta que solo podemos usar una instancia por puerto, de lo contrario marcará un error.
  • Requiere especificar el número de puerto al momento de realizar la conexión, en caso de usar el puerto 1433, no es necesario especificarlo.
  • El nombre de la instancia es asignada al momento de la instalación.
  • Pueden existir cierta cantidad de instancias en un mismo servidor.

SOLUCION

Como configurar el puerto de una DEFAULT INSTANCE

1.- Abrimos en nuestro servidor el SQL SERVER CONFIGURATION MANAGER, como pueden observar yo tengo instaladas 2 NAMED INSTANCEs ( SQLSERVER2012 y SQLSERVER2014 ) y 1 DEFAULT INSTANCE ( MSSQLSERVER ). Por el momento solo requerimos que el servicio SQL Server correspondiente a la DEFAULT INSTANCE se encuentre corriendo, si hacemos alguna modificación recuerden que es necesario reiniciar el servicio.

2.- Damos click sobre los protocolos de la DEFAULT INSTANCE, solo se requiere que el protocolo TCP/IP se encuentre habilitado, después explicaré para que funcionan los otros protocolos.

3.- Hacemos doble click sobre TCP/IP  y vamos a la pestaña IP Adressess, solo verificamos que la IP del equipo se encuentre en la parte de IP2 y en la parte de IPAll, en la propiedad TCP Port se encuentre escrito el puerto 1433 y en TCP Dynamic Ports se encuentre en blanco.

Si hicimos alguna modificación, es necesario Reiniciar el servicio SQL Server( MSSQLSERVER ) y ahora si podemos probar:

Ahora bien, ya estamos conectados, pero como sabemos cual es la instancia a la que estamos conectados, podemos probar con la siguiente consulta:
SELECT @@SERVICENAME AS instanceName
, SERVERPROPERTY('InstanceName') AS instanceName2
, SERVERPROPERTY('ServerName') AS serverName
, local_tcp_port AS puerto
FROM   sys.dm_exec_connections
WHERE  session_id = @@SPID


Solo que debemos tomar algo en cuenta, MSDN en línea dice lo siguiente con respecto a la propiedad InstanceName con la función SERVERPROPERTY: Regresa NULL si el nombre de la instancia es la DEFAULT, si el valor de entrada es incorrecto o error, es por ello que obtenemos NULL, pero con @@SERVICENAME podemos obtener el nombre de la instancia a la que estamos conectados.

DEFAULT INSTANCE USANDO OTRO PUERTO

Ahora bien, podemos conectarnos a nuestro DEFAULT INSTANCE con otro puerto? CLARO!, solo debemos configurarlo en el SQL SERVER CONFIGURATION MANAGER nuevamente y esta vez indicar el número de puerto al realizar la conexión, para el ejemplo usaré el puerto 1010, recuerden verificar que el puerto no esté siendo utilizado o deshabilitar el FIREWALL o agregarlo en la lista de puertos en el mismo FIREWALL.

Si intentamos conectarnos sin usar el puerto obtendremos:

Ahora bien, en mi caso tengo 2 NAMED INSTANCE más instaladas en el mismo equipo, SQLSERVER2012 y SQLSERVER2014, lo que haré es configurar la primera en el puerto para una DEFAULT INSTANCE ( 1433 ) y la segunda en un puerto por ejemplo el 1020. En el caso de la primera no será necesario especificar el puerto al momento de realizar la conexión por que está usando el puerto DEFAULT.

NAMED INSTANCE: SQLSERVER2012, puerto 1433 (DEFAULT)

NAMED INSTANCE: SQLSERVER2014, puerto 1020.

No olvidemos iniciar los servicios correspondientes para cada instancia:

Probamos todas las conexiones:
DEFAULT INSTANCE: MSSQLSERVER, puerto: 1010

NAMED INSTANCE: SQLSERVER2012, puerto 1433(DEFAULT)

NAMED INSTANCE: SQLSERVER2014, puerto 1020

De esta manera, tenemos 3 instancias en nuestro servidor, pueden configurarlos de la manera que gusten, como pudieron observar una DEFAULT INSTANCE no requiere de usar siempre el puerto DEFAULT 1433, puede utilizar algún otro. En otro artículo les explicaré como pueden conectarse utilizando solo el nombre del equipo y el nombre de la instancia a la que desean conectarse, ejemplo: nombreEquipo\SQLSERVER2012 .

SALUDOS!
COMPARTE ESTA INFORMACION SI TE PARECIO INTERESANTE

0 comentarios:

Publicar un comentario