web-dev-qa-db-de.com

SQL Server @@ SERVERNAME, der den alten Computernamen zurückgibt?

Ich bin gerade über ein Problem in meinem SQL Server 2008 R2 gestolpert - Wenn ich @@SERVERNAME anrufe, gibt es den Computernamen meines alten Computers zurück und nicht den aktuellen. Warum ist das? Und wie kann ich das beheben? SQL Server erinnert sich irgendwie an den alten Computernamen.

31
Jerry Dodge

Dies ist bekannt und dokumentiert, siehe Umbenennen eines Computers, der eine eigenständige Instanz von SQL Server hostet :

Wenn Sie den Namen des Computers ändern, auf dem SQL Server ausgeführt wird, Der neue Name wird beim Start von SQL Server erkannt. Du hast nicht Führen Sie erneut Setup aus, um den Computernamen zurückzusetzen. Verwenden Sie stattdessen die Befolgen Sie die folgenden Schritte, um Systemmetadaten zu aktualisieren, die in .__ gespeichert sind. sys.servers und von der Systemfunktion @@ SERVERNAME gemeldet:

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

Sie können auch SERVERPROPERTY('MachineName') verwenden, das garantiert immer den aktualisierten Namen zurückgibt:

MachineName Windows-Computername, auf dem sich die Serverinstanz befindet Laufen. Für eine Clusterinstanz eine Instanz von SQL Server, auf der .__ ausgeführt wird. Auf einem virtuellen Server in Microsoft Cluster Service gibt es den Namen .__ zurück. des virtuellen Servers.

SERVERPROPERTY('ComputerNamePhysicalNetBIOS') gibt den aktuell aktiven Knoten in einem Cluster oder denselben Wert wie 'MachineName' in einer nicht gruppierten Instanz zurück.

Bearbeiten Sie (von einem Drittanbieter), um den Kommentar von WEFX für den Fall hinzuzufügen, dass jemand ihn übersieht:

Außerdem müssen Sie Ihre SQL-Dienste neu starten (oder den SQL Server neu starten), damit SELECT @@SERVERNAME den genauen (neuen) Servernamen zurückgibt

55
Remus Rusanu

Ich vermute, das liegt daran, dass es sich bei der Instanz um eine Standardinstallation handelte und der Maschinenname damals vererbt wurde.

SELECT SERVERPROPERTY('MachineName')
3
MarkD

Manchmal können Sie einen Fehler There are still remote logins or linked logins for the server 'yourServerName' erhalten, wenn Sie sp_dropserver 'oldServerName'; ausführen.

Wenn Sie diese Art von Fehler haben, führen Sie stattdessen sp_dropserver 'oldServerName', 'droplogins'; aus.

3
Slav

Ich habe alle möglichen Lösungen ausprobiert und die bewährte Antwort funktionierte nicht für mich. Ich bin ein bisschen gesurft und habe die perfekte Lösung gefunden. Ich hoffe jemand findet das hilfreich.

1) Öffnen Sie die Registrierung mit der Taste Fenster + R. Geben Sie regedit ein.

2) Gehen Sie zu * HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server *} _ Sie werden zahlreiche nummerierte Verzeichnisse sehen (100,120,130 ....). 

OR

sie können einfach "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server \" in die Adressleiste des Registrierungs-Editors eingeben

3) Gehen Sie alle nummerierten Verzeichnisse durch und prüfen Sie, ob Sie das Verzeichnis "Machines" finden können

4) Wenn Sie "Machines" gefunden haben, ändern Sie den Schlüssel OriginalMachineName in den gewünschten Servernamen. Das ist eigentlich der Name des Original-Computers, als das Fenster zum ersten Mal installiert wurde.

PS: Mein Pfad war OriginalMachineName> Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\Machines

2
Chintan

sp_addserver wird es beheben .....

1
bummi

In meinem Fall konnte ich den alten Namen nicht löschen; Ich konnte MSSQL oder VM alles neu starten, was ich wollte, @@SERVERNAME gab den alten Namen zurück, während jede andere Methode (einschließlich SERVERPROPERTY('SERVERNAME')) den neuen Namen zurückgab, was alle möglichen Probleme verursachte. Es stellt sich heraus, dass der new name gelöscht und erneut hinzugefügt wird (und MSSQL natürlich neu gestartet wird), um dieses seltsame Problem zu beheben:

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