Renommer une instance Micrososft SQL Server 2005

fadace

Comment renommer une instance Microsoft SQL Server 2005 ♪

- Titre : Renommer une instance Micrososft SQL Server 2005

- Auteur : fadace

- Parution : 26 mai 2007

- Mise à jour : 30 mai 2007

- Licence : Copyright ® 2007 fadace. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Procédure

- III. Finale

I - Introduction

Commençons par le début ! Est-il possible de renommer une instance SQL Server sans passer par une désinstallation / réinstallation ? Comme souvent, la réponse technique (« Oui ») et la réponse officielle (soit celle de l'éditeur : « Non ») s'opposent. La procédure suivante tente à le prouver.

L'installation par défaut d'une instance Microsoft SQL Server se fait de manière non nommée. En fait, il s'agit plutôt d'un nommage par défaut : le service se nommera SQLSERVER et l'instance sera accessible via le nom de la machine hôte.

Ce nommage par défaut est aussi ce qui se passe lors de l'installation d'une instance MSDE.

Soulignons donc bien que cette procédure n'est en aucun cas le feu vert donné à un renommage, mais la preuve technique que le renommage est possible… ce qui nous permettra de mieux comprendre comment se comporte SQL Server et ses services.

II - Procédure

Nous allons commencer par le plus facile, c'est-à-dire modifier la seule trace du nom de l'instance dans Microsoft SQL Server.

Détecter le nom actuel de l'instance. En cas de retour de plusieurs lignes (notamment si vous avez déjà configuré des serveurs distants), choisissez la ligne qui est en local

select @@servername

Supprimez-le ensuite et recréez-le

exec sp_dropserver AncienneInstance
exec sp_addserver 'MaMachine\NouvelleInstance', local

Arrêtez l'instance (et ses éventuelles dépendances), car nous allons devoir attaquer maintenant la base de registre

shutdown

Renommez les clés de registres en créant le script suivant MonSQL.REG puis en l'exécutant

-------------------------------------------------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQL$NouvelleInstance]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):22,00,43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,\
6d,00,20,00,46,00,69,00,6c,00,65,00,73,00,5c,00,4d,00,69,00,63,00,72,00,6f,\
00,73,00,6f,00,66,00,74,00,20,00,53,00,51,00,4c,00,20,00,53,00,65,00,72,00,\
76,00,65,00,72,00,5c,00,4d,00,53,00,53,00,51,00,4c,00,2e,00,31,00,5c,00,4d,\
00,53,00,53,00,51,00,4c,00,5c,00,42,00,69,00,6e,00,6e,00,5c,00,73,00,71,00,\
6c,00,73,00,65,00,72,00,76,00,72,00,2e,00,65,00,78,00,65,00,22,00,20,00,2d,\
00,73,00,42,00,45,00,53,00,32,00,50,00,00,00
"DisplayName"="SQL Server (NouvelleInstance)"
"ObjectName"="LocalSystem"
"Description"="Provides storage, processing and controlled access of data and rapid transaction processing."

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQL$NouvelleInstance\Linkage]
"Export"=hex(7):42,00,45,00,53,00,32,00,50,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQL$NouvelleInstance\Performance]
"Library"="sqlctr90..dll"
"Open"="OpenSQLPerformanceData1"
"Collect"="CollectSQLPerformanceData1"
"Close"="CloseSQLPerformanceData1"
"PerfIniFile"="perf-NouvelleInstancesqlctr.ini"
"WbemAdapFileSignature"=hex:35,09,79,97,c3,49,fc,89,5f,7b,37,66,3d,e5,da,de
"WbemAdapFileTime"=hex:00,87,23,bb,61,d0,c5,01
"WbemAdapFileSize"=dword:000102d8
"WbemAdapStatus"=dword:00000000
"Last Counter"=dword:0000195e
"Last Help"=dword:0000195f
"First Counter"=dword:000016ea
"First Help"=dword:000016eb
"Library Validation Code"=hex:00,b8,a0,b9,c3,4c,c7,01,70,09,01,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQL$NouvelleInstance\Security]
"Security"=hex:01,00,14,80,b8,00,00,00,c4,00,00,00,14,00,00,00,30,00,00,00,02,\
00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
00,00,02,00,88,00,06,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\
05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,04,00,00,00,00,\
00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,06,00,00,00,00,00,14,00,00,01,\
00,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,00,18,00,fd,01,02,00,01,02,00,\
00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,00,00,00,00,00,05,12,00,00,00,\
01,01,00,00,00,00,00,05,12,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQL$NouvelleInstance\Enum]
"0"="Root\\LEGACY_MSSQL$NouvelleInstance\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001

Supprimez la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLSERVER.

Modifiez, dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server, la clé InstalledInstances de MSSQLSERVER à NouvelleInstance.

Créez la nouvelle clé de registre via l'exécution du fichier suivant :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\NouvelleInstance]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\NouvelleInstance\MSSQLServer]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\NouvelleInstance\MSSQLServer\CurrentVersion]
"CurrentVersion"="9..00.3042.00"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\NouvelleInstance\MSSQLServer\SuperSocketNetLib]
"ProtocolList"=hex(7):74,00,63,00,70,00,00,00,6e,00,70,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\NouvelleInstance\MSSQLServer\SuperSocketNetLib\Np]
"PipeName"="\\\\.\\pipe\\MSSQL$NouvelleInstance\\sql\\query"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\NouvelleInstance\MSSQLServer\SuperSocketNetLib\Tcp]
"TcpPort"="1446"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\NouvelleInstance\Setup]
"SQLPath"="C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL"

Rebaptisez HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL\MSSQLSERVER en …\NouvelleInstance.

Rebaptisez HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\(Default)\MSSQLSERVER en …\NouvelleInstance.

Rebaptisez HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSFTESQLInstMap\1\FriendlyName\MSSQLSERVER en …\NouvelleInstance.

III - Finale

Il ne nous reste plus qu'à redémarrer l'instance

- soit via la commande net start MSSQL$NouvelleInstance ;

- soit via les outils graphiques ;

- soit encore via les services Windows.

Je ne traite pas ici le renommage des services associés de l'agent, du reporting server… Leur traitement est quasi similaire et… il est souvent bien plus aisé d'opérer une désinstallation/réinstallation de ces modules pour s'éviter bien des soucis…