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

適用対象:SQL Server - Windows のみ

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 (Transact-SQL)」または「sp_setnetname (Transact-SQL)」を参照してください。

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

関連項目