web-dev-qa-db-ja.com

SQL Server @@ SERVERNAMEは古いマシン名を返しますか?

SQL Server 2008 R2の問題に出くわしました-@@SERVERNAME、現在の名前ではなく、古いコンピュータのマシン名を返しています。どうしてこれなの?そして、どうすれば修正できますか? SQL Serverは何とかして古いマシン名を記憶しています。

31
Jerry Dodge

これはよく知られ、文書化されています。 SQL Serverのスタンドアロンインスタンスをホストするコンピューターの名前を変更する を参照してください。

SQL Serverを実行しているコンピューターの名前を変更すると、SQL Serverの起動時に新しい名前が認識されます。コンピューター名をリセットするためにセットアップを再度実行する必要はありません。代わりに、次の手順を使用して、sys.serversに保存され、システム関数@@ SERVERNAMEによって報告されるシステムメタデータを更新します。

_sp_dropserver <old_name>;
GO
sp_addserver <new_name>, local;
GO
_

SERVERPROPERTY('MachineName') を使用することもできます。これは、常に更新された名前を返すことが保証されています。

MachineNameサーバーインスタンスが実行されているWindowsコンピューター名。クラスタ化されたインスタンス、Microsoft Cluster Service上の仮想サーバーで実行されているSQL Serverのインスタンスの場合、仮想サーバーの名前を返します。

SERVERPROPERTY('ComputerNamePhysicalNetBIOS')は、クラスター内の現在のアクティブノード、またはクラスター化されていないインスタンスの 'MachineName'と同じ値を返します。

誰かが見逃した場合に備えて、WEFXのコメントを追加するために(サードパーティによって)編集します。

また、_SELECT @@SERVERNAME_が正確な(新しい)サーバー名を返すために、SQLサービスを再起動(またはSQL Serverを再起動)する必要があります。

56
Remus Rusanu

これは、インスタンスがデフォルトのインストールであり、その時点でマシン名を継承して保持していたためだと思われます。これを試して?

SELECT SERVERPROPERTY('MachineName')
3
MarkD

エラーが発生する場合がありますThere are still remote logins or linked logins for the server 'yourServerName'実行時sp_dropserver 'oldServerName';

この種のエラーがある場合は、sp_dropserver 'oldServerName', 'droplogins';代わりに。

3
Slav

考えられるすべての解決策を試しましたが、承認された答えはうまくいきませんでした。私は少しサーフィンして完璧な解決策を思いつきました。誰かがこれが役立つことを願っています。

1)Window + Rキーでレジストリを開きます。タイプregedit

2)* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server *に移動します。多くの番号付きディレクトリが表示されます(100,120,130 ....)

OR

レジストリエディターのアドレスバーに "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server \"と入力するだけです。

3)すべての番号付きディレクトリを調べて、「Machines」ディレクトリが内部にあるかどうかを確認します

4)「Machines」を見つけたら、OriginalMachineNameキーを希望するサーバー名に変更します。これは、実際にWindowsが最初にインストールされたときの元のマシン名です。

PS:私のパスはOriginalMachineName>Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\Machines

2
Chintan

sp_addserver は修正します.....

1
bummi