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…