Páginas

lunes, 8 de agosto de 2011

Usos prácticos del Alias de Servidor de SQL Server

El escenario en el que se plantea el problema es el siguiente: Estamos usando control de código con Team Foundation por supuesto, varios desarrolladores implicados en el mismo proyecto de Integration Services, cada desarrollador trabaja en un puesto distinto con distinta configuración (nombre de Pc, nombre de la instancia de SQL Server, Etc.).

El problema que se plantea es el siguiente: Cada vez que un desarrollador obtiene la última versión de un proyecto de Integration Services,  al abrirlo en Visual Studio se encuentra con que las cadenas de conexión de los orígenes de datos están apuntando a la instancia del último desarrollador que guardó los cambios.

Al no encontrarse ninguno de los objetos a los que referencia la solución el proyecto tarda bastante en abrirse, una posible solución  seria el modo de trabajo offline de Visual Studio, después abrir el paquete y modificar la cadena de conexión de los distintos orígenes de datos, pero nos obliga a todos los desarrolladores a estar modificándolas constantemente.

La solución que propongo se basa en una funcionalidad que esta presente en SQL Server desde la version 6.5, se trata del Alias de servidor, no confundir con el alias de objeto, se pueden crear alias de nombre de instancia para los distintos protocolos soportados por el servicio de SQL Server 2008 R2, (TCP, Named Pipes y VIA).

Entre otros usos esta solución nos permite enmascarar el nombre de maquina en caso de ser necesario, solo tenemos que tener en cuenta que para usar un puerto distinto al 1433 deberemos especificarlo en la ventana de configuración, y tener arrancado el servicio del sql Server Browser, podéis encontrar mas ayuda sobre este tema en el siguiente enlace a los libros en pantalla de SQL Server (BOL):
http://msdn.microsoft.com/en-us/library/ms191260.aspx

Otras Situaciones en las que puede ser  útil el alias de nombre de instancia:
  • Herramientas que no soportan conexión a instancias con nombre.
  • Enmascaramiento del nombre real en las cadenas de conexión.
  • Usar varios nombres para referirse a la misma instancia por necesidades como la expuesta al comienzo de este post.


    Por si alguien necesita crearse un alias, aquí explico los pasos de creación y verificación de funcionamiento del mismo:

    En el menú Inicio elegimos todos los programas, Microsoft SQL Server 2008 R2, Herramientas de configuración y SQL Server Configuration Manager , al abrirse la herramienta buscamos el nodo SQL Server NetWork Configuration (32) y lo desplegamos, pulsamos sobre alias y en el panel derecho pulsamos con el botón derecho del ratón y elegimos la opción nuevo alias.

    En el apartado Alias Name  escribimos el nombre falso por el que nos queremos referir a nuestra instancia o servidor, en protocolo especificamos el protocolo que deseamos configurar y en Server el nombre real de nuestro servidor o instancia. En el ejemplo una instancia sin nombre.

     image

    Una vez creado el alias este es el aspecto que tiene en SQL Server configuration manager:
    image

    Para verificar que funciona hacemos lo siguiente, desde SQL Server management studio también se pueden testear los scripts para SQLCMD, así que para aprovechar esa funcionalidad vamos a abrir SQL Server management studio y en el menú Query elegimos SQL CMD Mode:

    image

    Por último escribimos un par de consultas que simplemente conectan a la instancia especificada para recabar el nombre de instancia real, la primera conexión la realizamos usando "localhost" y la segunda especificando el nombre de nuestro alias, el resultado de ambas consultas muestran el nombre real de la instancia a la que hemos conectado, obviamente es el mismo.

    image

      
    Espero que lo encontréis de utilidad, hasta pronto.

    2 comentarios:

    1. y que pasaría de dos personas le dan el mismo alias a distintas maquinas? a cual de las dos se haria referencia??
      O que pasaria si se crea un alias con el nombre real de una maquina dentro de la red? habria algun problema?

      ResponderEliminar
    2. Hola Patricio, sobre la primera pregunta quiero entender que esas dos personas están cada una trabajando en un puesto cliente distinto, si es así no pasaría nada, cada una apuntaría a un servidor distinto, es decir persona 1 en puesto 1 alias Server1 apunta a Real1 y se conectaría a Real1 y Persona 2 en puesto2 alias Server1 apunta a Real2 y se conectaría a Real2, si son el mismo puesto no podrás usar dos veces el mimo nombre de alias, no te deja la herramienta.
      Por otro lado si te creas en local un alias con el nombre de un server que está en red la herramienta de conexión que uses desde ese puesto se va a conectar al server al que apunte tu alias, aunque este no sea el server de red. Excluyo los casos en los que no estés usando los puertos por defecto (1433 /34 ) y sin servicio de browser correctamente configurado etc, que harían fallar la conexión.

      ResponderEliminar

    LinkedIn