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.
Una vez creado el alias este es el aspecto que tiene en SQL Server configuration manager:
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:
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.
Espero que lo encontréis de utilidad, hasta pronto.