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

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

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

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

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

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

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

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

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

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

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

    sp_dropserver <old_name\instancename>
    GO
    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'.

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

リモート ログインを削除するには

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

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

    sp_dropremotelogin old_name\instancename
    GO
    

リンク サーバー構成 : リンク サーバー構成はコンピュータ名の変更操作の影響を受けます。sp_addlinkedserver または sp_setnetname を使用してコンピュータの名前参照を更新します。詳細については、MSDN の SQL Server オンライン ブックのトピック「sp_addlinkedserver」または「sp_setnetname」を参照してください。

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