SQL Server 2008 R2の問題に遭遇しました-を呼び出すと@@SERVERNAME
、現在のコンピューターではなく、古いコンピューターのマシン名が返されます。どうしてこれなの?そして、どうすればそれを修正できますか?SQLServerはどういうわけか古いマシン名を記憶しています。
7 に答える
これはよく知られており、文書化されています。SQLServerのスタンドアロンインスタンスをホストするコンピューターの名前を変更するを参照してください。
SQL Serverを実行しているコンピューターの名前を変更すると、SQLServerの起動時に新しい名前が認識されます。コンピューター名をリセットするために、セットアップを再度実行する必要はありません。代わりに、次の手順を使用して、sys.serversに保存され、システム関数@@SERVERNAMEによって報告されるシステムメタデータを更新します。
sp_dropserver <old_name>;
GO
sp_addserver <new_name>, local;
GO
SERVERPROPERTY('MachineName')
常に更新された名前を返すことが保証されているwhichを使用することもできます。
MachineNameサーバーインスタンスが実行されているWindowsコンピューター名。クラスタ化されたインスタンス(Microsoft ClusterServiceの仮想サーバーで実行されているSQLServerのインスタンス)の場合、仮想サーバーの名前を返します。
SERVERPROPERTY('ComputerNamePhysicalNetBIOS')
クラスタ内の現在のアクティブノード、または非クラスタ化インスタンスの「MachineName」と同じ値を返します。
誰かがそれを見逃した場合に備えて、WEFXのコメントを追加するために(サードパーティによって)編集します:
SELECT @@SERVERNAME
また、正確な(新しい)サーバー名を返すには、SQLサービスを再起動する(またはSQL Serverを再起動する)必要があります。
私は考えられるすべての解決策を試しましたが、承認された答えはうまくいきませんでした。私は少しサーフィンをして、完璧な解決策を考え出しました。誰かがこれがお役に立てば幸いです。
1)ウィンドウ+Rキーでレジストリを開きます。regeditと入力します
2)* HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server *に移動します。多数の番号付きディレクトリ(100、120、130 ....)が表示されます。
また
レジストリエディタのアドレスバーに「Computer\HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \MicrosoftSQLServer\」と入力するだけです。
3)番号が付けられたすべてのディレクトリを調べて、「 Machines」ディレクトリが中にあるかどうかを確認します。
4)「マシン」が見つかったら、 OriginalMachineNameキーを目的のサーバー名に変更します。これは、Windowsが最初にインストールされたときの実際の元のマシン名です。
PS:私のパスはOriginalMachineName> Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ 130\Machinesでした
これは、インスタンスがデフォルトのインストールであり、その時点でマシン名を継承して保持しているためだと思います。これを試して?
SELECT SERVERPROPERTY('MachineName')
There are still remote logins or linked logins for the server 'yourServerName'
実行時にエラーが発生することがありますsp_dropserver 'oldServerName';
この種のエラーが発生した場合は、sp_dropserver 'oldServerName', 'droplogins';
代わりに実行してみてください。
sp_addserverはそれを修正します....。
SQL Serverのデフォルトインスタンスをホストする名前が変更されたコンピューターの場合は、次の手順を実行します。
EXEC sp_dropserver '<old_name>';
GO
EXEC sp_addserver '<new_name>', local;
GO
SQLServerのインスタンスを再起動します。
SQL Serverの名前付きインスタンスをホストする名前が変更されたコンピューターの場合は、次の手順を実行します。
EXEC sp_dropserver '<old_name\instancename>';
GO
EXEC sp_addserver '<new_name\instancename>', local;
GO
私の場合、古い名前を削除できませんでした。MSSQLまたはVMを必要なだけ再起動@@SERVERNAME
し、他のすべてのメソッド(を含むSERVERPROPERTY('SERVERNAME')
)が新しい名前を返している間、古い名前を返し続けたため、さまざまな問題が発生していました。新しい名前を削除して再度追加する(そしてもちろんMSSQLを再起動する)と、この奇妙な問題が修正されます。
sp_dropserver <new_name>; GO
sp_addserver <new_name>, local; GO