Renommer une instance Micrososft SQL Server 2005

Avancé/expert

Comment renommer une instance Microsoft SQL Server 2005

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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ées. 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

 
Sélectionnez

select @@servername

Supprimez-le ensuite et recréez-le

 
Sélectionnez
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

 
Sélectionnez
shutdown 

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

 
Sélectionnez

------------------------------------------------------------------------------------------- 
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

 
Sélectionnez
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...

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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.