Menu & Search

Renaming a computer that hosts SQL Server

Renaming a computer that hosts SQL Server


When changing the hostname of a computer running SQL Server, system metadata must be updated so that remote connections and applications do not lose connectivity. Those that use @@SERVERNAME or query sys.servers for the hostname that is.

Microsoft’s documentation pages are a must read as always. Some considerations include; failover clustering, mirroring, replication, SSRS, local authentication and remote logins currently connected.


Updating SQL Server after a Hostname Change

(SQL Server has been installed – you now need to change the hostname of the server.)

1. Rename Computer & reboot.

2. Open SSMS & connect to your SQL Instance.
If the default Server name remains, you’ll receive a connection error:
Change the Server name to localhost to get connected.

3. Get SQL’s impression on hostnames.
xp_getnetname is an undocumented extended stored procedure that returns your current hostname. We want both to return the same result.

4. Drop currently registered name (sp_dropserver).

5. Register new hostname (sp_addserver).

6. For the change to be applied, restart the SQL Server service.

7. Get the SQL Server hostname info again.

That’s it done!

When you next open SSMS, ‘localhost’ should be shown in the Server name field. Changing this to your new hostname will now work.


SQL Code

-- Get currently registered hostname: 
SELECT @@SERVERNAME AS 'Old Server Name' 
-- Get 
EXEC xp_getnetname 

-- Drop current hostname registration. 
USE [master] GO sp_dropserver 'enter old hostname returned by @@SERVERNAME above' 
GO 

--Register new hostname. 
USE [master] GO sp_addserver 'enter hostname returned from xp_getnetname above',local -- having local updates the metadata for @@SERVERNAME 
GO 

-- Restart SQL to apply changes

3 Comments

  1. User
    2 years ago

    I got an error in the 6th step
    Restart-Service *MSSQL*
    Return a message in Red like this : {
    Restart-service : cannot stop service ‘SQL server (SQL EXPRESS) (MSSQL$SQLEXPRESS)’ because it has dependent services. It can only be stopped if the force flag is a set.
    At line:1 Char:1
    + ……….. (It’s a long message)
    }
    What should I do?