Cambiar el nombre del servidor conteniendo una instalación de SQLServer


Hace tiempo vi varios errores aunque en naturaleza distintos, tenían una intima relación. Esto era que el nombre del servidor donde estaba instalado SQL Server fue cambiado de nombre sin avisar al DBA (o de menos espero que así sea). La instancia aun inicia de manera normal, no tenemos problema al conectarnos o lanzar consultas.


Lo que pasa es que SQL Server toma el nombre una vez que inicia el motor pero almacena siempre el dato y es lo que normalmente consultamos con el @@SERVERNAME, aunque esto no impide el trabajo directo si impide conexiones remotas realizadas por replicación, log shipping (solo con replicación), mirror, linked servers, y jobs que usen el nombre del server, trayendo errores en ocasiones algo crípticos que no son fáciles de ver.

Esto lo podemos ver de 2 maneras distintas.

Esta opción nos traera el nombre como fue dado y de la ultima vez que se reinicio la instancia.

SELECT @@servername AS _@@servername, * FROM sys.servers WHERE server_id = 0

Mientras que esta consulta nos proporciona el nombre actual sin importar cual fue declarado.

SELECT SERVERPROPERTY ('ServerName'), SERVERPROPERTY ('MachineName')

Ahora como hacer esto, tomando como base el documento de Microsoft que esta en los links al final.

Para instancia default


sp_dropserver <old_name>;
GO
sp_addserver <new_name>, local;
GO

Para instancia nombrada


sp_dropserver <old_name\instancename>;
GO
sp_addserver <new_name\instancename>, local;
GO

Nota: Es necesario el reinicio de la instancia de SQL Server para que el nuevo nombre sea tomado, ya que como mencionamos esto es tomado al inicio de la instancia, y esto solo afecta a SQL Server 2005 a 2014.

Ahora como vemos existen varias restricciones, y como se comento anteriormente, replicación, mirror, linked servers tendrán que ser deshabilitados y recreados antes de hacer un cambio en el nombre del servidor  y luego recreados, lamentablemente no existe otra manera de poder realizar esto.

Una ultima consideración es el hecho que named pipes, puede verse afectado por el cambio de nombre, esto lo podemos ver al final del documento.

Más información


Rename a Computer that Hosts a Stand-Alone Instance of SQL Server
https://msdn.microsoft.com/en-us/library/ms143799.aspx

@@SERVERNAME (Transact-SQL)
http://technet.microsoft.com/en-us/library/ms187944.aspx 

sp_addserver (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms174411.aspx

Creating a Valid Connection String Using Named Pipes
https://msdn.microsoft.com/en-us/library/ms189307(SQL.100).aspx

Comentarios