web-dev-qa-db-fra.com

SQL Server @@ SERVERNAME renvoyant l'ancien nom d'ordinateur?

Je viens de trébucher sur un problème rencontré dans SQL Server 2008 R2: lorsque j'appelle @@SERVERNAME, le nom d'ordinateur de mon ancien ordinateur est renvoyé, plutôt que le nom actuel. Pourquoi est-ce? Et comment puis-je résoudre ce problème? En quelque sorte, SQL Server se souvient de l'ancien nom d'ordinateur.

31
Jerry Dodge

Ceci est bien connu et documenté, voir Renommer un ordinateur hébergeant une instance autonome de SQL Server :

Lorsque vous modifiez le nom de l'ordinateur qui exécute SQL Server, le nouveau nom est reconnu lors du démarrage de SQL Server. Tu n'as pas pour exécuter le programme d'installation à nouveau pour réinitialiser le nom d'ordinateur. Au lieu de cela, utilisez le étapes suivantes pour mettre à jour les métadonnées système stockées dans sys.servers et signalés par la fonction système @@ SERVERNAME:

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

Vous pouvez également utiliser SERVERPROPERTY('MachineName') qui garantit de toujours renvoyer le nom mis à jour:

Nom_ordinateur Nom de l'ordinateur Windows sur lequel l'instance de serveur est fonctionnement. Pour une instance en cluster, une instance de SQL Server exécutant sur un serveur virtuel sur Microsoft Cluster Service, il renvoie le nom du serveur virtuel.

SERVERPROPERTY('ComputerNamePhysicalNetBIOS') renverra le nœud actif actuel dans un cluster, ou la même valeur que "Nom de la machine" sur une instance non-cluster.

Modifier (par une tierce partie) pour ajouter le commentaire de WEFX au cas où quelqu'un l'aurait manqué:

De plus, vous devrez redémarrer vos services SQL (ou redémarrer SQL Server) pour que SELECT @@SERVERNAME renvoie le (nouveau) nom de serveur exact.

55
Remus Rusanu

Je suppose que cela est dû au fait que l’instance était une installation par défaut et qu’elle avait conservé le nom de l’ordinateur à l’époque et l’avait conservée ..__

SELECT SERVERPROPERTY('MachineName')
3
MarkD

Parfois, vous pouvez obtenir une erreur There are still remote logins or linked logins for the server 'yourServerName' lorsque vous exécutez sp_dropserver 'oldServerName';

Si vous avez ce genre d'erreur, essayez plutôt d'exécuter sp_dropserver 'oldServerName', 'droplogins';.

3
Slav

J'ai essayé toutes les solutions possibles et la réponse approuvée n'a pas fonctionné pour moi. J'ai un peu surfé et trouve la solution idéale. J'espère que quelqu'un trouvera cela utile.

1) Ouvrez le registre par Fenêtre + R clé. Type regedit

2) Allez dans * HKEY_LOCAL_MACHINE\LOGICIEL\Microsoft\Microsoft SQL Server * Vous verrez beaucoup de répertoires numérotés (100,120,130 ...) 

OR

vous pouvez simplement taper"Ordinateur\HKEY_LOCAL_MACHINE\LOGICIEL\Microsoft\Microsoft SQL Server \"dans la barre d'adresse de l'Éditeur du Registre

3) parcourez tous les répertoires numérotés et voyez si vous pouvez trouver le répertoire " Machines " dans le répertoire

4) Une fois que vous avez trouvé " Machines ", modifiez le nom OriginalMachineName key en indiquant le nom du serveur de votre choix. C'est en fait le nom d'origine de la machine lors de la première installation de Windows.

PS: mon chemin était OriginalMachineName> Ordinateur\HKEY_LOCAL_MACHINE\LOGICIEL\Microsoft\Microsoft SQL Server\130\Machines 

2
Chintan

sp_addserver le résoudra .....

1
bummi

Dans mon cas, je ne pouvais pas abandonner l'ancien nom; Je pouvais redémarrer MSSQL ou la VM tout ce que je voulais, @@SERVERNAME renvoyait l'ancien nom alors que toutes les autres méthodes (y compris SERVERPROPERTY('SERVERNAME')) renvoyaient le nouveau nom, ce qui posait toutes sortes de problèmes. Il s'avère que supprimer le nom new et le rajouter (et redémarrer MSSQL bien sûr) corrige ce problème étrange:

sp_dropserver <new_name>; GO
sp_addserver <new_name>, local; GO
0
Keilaron