SQL Server のスタンドアロン インスタンスをホストするコンピューターの名前を変更する

適用対象: SQL Server - Windows only

SQL Serverを実行するコンピューターの名前を変更した場合、変更後の名前は SQL Server の起動時に認識されます。 コンピューター名を再設定するためにセットアップを再度実行する必要はありません。 代わりに次の手順を実行して、sys.servers に格納され、システム関数 @@SERVERNAME でレポートされるシステム メタデータを更新します。 @@SERVERNAME を使用するか、sys.servers からサーバー名のクエリを実行するリモート接続およびリモート アプリケーションのコンピューター名の変更を反映するには、システム メタデータを更新します。

ここで示す手順を実行しても、SQL Server のインスタンスの名前を変更することはできません。 変更できるのは、インスタンス名のうち、コンピューター名に対応する部分のみです。 たとえば、Instance1 という名前の SQL Server インスタンスをホストする MB1 という名前のコンピュータを、MB2 などの別の名前に変更できます。 ただし、名前のインスタンスの部分、Instance1 は変更されません。 この例では、\\<ComputerName>\<InstanceName>\\MB1\Instance1 から \\MB2\Instance1 に変更されます。

前提条件

名前変更のプロセスを開始する前に、次の情報を確認します。

  • SQL Server のインスタンスが SQL Server フェールオーバー クラスターに含まれている場合、コンピューターの名前変更のプロセスは、スタンドアロン インスタンスをホストするコンピューターとは異なります。 詳細については、「SQL Server のフェールオーバー クラスター インスタンスの名前変更」を参照してください。

  • SQL Server レプリケーションでログ配布を使用する場合を除き、レプリケーションに関連するコンピューターの名前は変更できません。 プライマリ コンピューターが完全に存在しなくなった場合は、ログ配布のセカンダリ コンピューターの名前を変更できます。 詳細については、「ログ配布とレプリケーション (SQL Server)」を参照してください。

  • Reporting Services を使用するように構成されたコンピューターの名前を変更すると、コンピューター名の変更後、Reporting Services を使用できないことがあります。 詳細については、「 Server Web Service の名前の変更」を参照してください。

  • データベース ミラーリングを使用する構成のコンピューターの名前を変更するときは、名前変更操作の前にデータベース ミラーリングを無効にする必要があります。 次に、新しいコンピューター名でデータベース ミラーリングを再確立します。 データベース ミラーリングのメタデータは、新しいコンピュータ名を反映するように自動的には更新されません。 次の手順を実行してシステム メタデータを更新します。

  • コンピューター名へのハードコード参照を使用する Windows グループをとおして SQL Server に接続するユーザーは、 SQL Serverに接続できなくなることがあります。 この問題は、名前の変更後に、Windows グループで変更前のコンピュータ名が指定されていると発生する可能性があります。 このような Windows グループが名前変更の後でも SQL Server 接続を確立できるようにするには、新しいコンピューター名を指定するように Windows グループを更新します。

SQL Server を再起動した後、新しいコンピュータ名を使用して SQL Serverに接続できます。 @@SERVERNAME がローカル サーバー インスタンスの更新後の名前を返すことを確認するには、シナリオに応じて次のプロシージャを手動で実行する必要があります。 使用する手順は、SQL Serverのデフォルトのインスタンスか名前付きインスタンスをホストするコンピュータを、更新しているかどうかによって決まります。

SQL Server のスタンドアロン インスタンスをホストするコンピューターの名前を変更する

  • SQL Serverの既定のインスタンスをホストする名前変更されたコンピューターの場合は、次のプロシージャを実行します。

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

    SQL Serverのインスタンスを再起動します。

  • SQL Serverの名前付きインスタンスをホストする名前変更されたコンピューターの場合は、次のプロシージャを実行します。

    EXEC sp_dropserver '<old_name\instancename>';
    GO
    EXEC sp_addserver '<new_name\instancename>', local;
    GO
    

    SQL Serverのインスタンスを再起動します。

名前変更操作の後

コンピュータ名の変更後は、変更前のコンピュータ名を使用しているすべての接続を、変更後の名前を使用して接続する必要があります。

名前変更操作を検証する

  • @@SERVERNAME または sys.servers で情報を確認できます。 @@SERVERNAME 関数は新しい名前を返します。sys.servers テーブルには新しい名前が表示されます。 次の例は、@@SERVERNAME の使用方法を示しています。

    SELECT @@SERVERNAME AS 'Server Name';
    

その他の注意点

リモートログイン

コンピュータでリモートログインを行っている場合に sp_dropserver を実行すると、次のような出力のエラーが発生することがあります。

Server: Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 44 There are still remote logins for the server 'SERVER1'.

このエラーを解決するには、このサーバーに対するリモート ログインを削除する必要があります。

  • 既定のインスタンスの場合は、次のプロシージャを実行します。

    EXEC sp_dropremotelogin old_name;
    GO
    
  • 名前付きインスタンスの場合は、次のプロシージャを実行します。

    EXEC sp_dropremotelogin old_name\instancename;
    GO
    

リンク サーバーの構成

コンピュータ名の変更操作は、リンク サーバーの構成に影響します。 sp_addlinkedserver または sp_setnetname を使用してコンピューターの名前参照を更新します。 詳しくは、「sp_addlinkedserver」または「sp_setnetname」を参照してください。

クライアントの別名

コンピュータの名前変更操作は、名前付きパイプを使用するクライアントの別名に影響します。 たとえば、別名 PROD_SRVRSRVR1 を指すように作成され、名前付きパイプ プロトコルを使用する場合、パイプ名は \\SRVR1\pipe\sql\query のようになります。 コンピューター名が変更された後は、名前付きパイプのパスは無効になります。 名前付きパイプの詳細については、「 名前付きパイプを使用した有効な接続文字列の作成」を参照してください。