sp_addserver (Transact-SQL)

適用対象: SQL Server

SQL Server のローカル インスタンスの名前を定義します。 SQL Server をホストするコンピューターの名前が変更されたら、sp_addserverを使用して、新しいコンピューター名を SQL Server データベース エンジンインスタンスに通知します。 このプロシージャは、コンピューターでホストされているデータベース エンジンのすべてのインスタンスで実行する必要があります。

データベース エンジンのインスタンス名は変更できません。 名前付きインスタンスのインスタンス名を変更するには、目的の名前で新しいインスタンスをインストールし、古いインスタンスからデータベース ファイルをデタッチし、新しいインスタンスにデータベースをアタッチして、古いインスタンスを削除します。 または、クライアント コンピューターにクライアント エイリアス名を作成し、サーバー コンピューター上のインスタンスの名前を変更せずに、接続を別のサーバー名とインスタンス名または <server>:<port> の組み合わせにリダイレクトすることもできます。

Transact-SQL 構文表記規則

構文

sp_addserver
    [ @server = ] N'server'
    [ , [ @local = ] 'LOCAL' ]
    [ , [ @duplicate_ok = ] 'duplicate_OK' ]
[ ; ]

引数

[ @server = ] N'server'

サーバーの名前。 サーバー名は一意であり、Windows コンピューター名の規則に従う必要がありますが、スペースは使用できません。 @serversysname で、既定値はありません。

SQL Server の複数のインスタンスがコンピューターにインストールされている場合、インスタンスは別のサーバー上にあるかのように動作します。 @server<servername>\<instancename>と呼ぶことで、名前付きインスタンスを指定します。

[ @local = ] 'LOCAL'

サーバーがローカル サーバーとして追加されることを指定します。 @localvarchar(10) で、既定値は NULL です。 LOCALとして@localを指定すると、@serverがローカル サーバーの名前として定義され、@@SERVERNAME関数は @server の値を返します。

SQL Server セットアップでは、インストール時にこの変数をコンピューター名に設定します。 既定では、コンピューター名は、ユーザーが追加の構成を必要とせずに SQL Server のインスタンスに接続する方法です。

ローカル定義は、データベース エンジンが再起動された後にのみ有効になります。 データベース エンジンの各インスタンスで定義できるローカル サーバーは 1 つだけです。

[ @duplicate_ok = ] 'duplicate_OK'

重複するサーバー名を許可するかどうかを指定します。 @duplicate_okvarchar(13) で、既定値は NULL です。 @duplicate_ok は、値 duplicate_OK または NULLのみを持つことができます。 @duplicate_okを指定し、追加するサーバー名が既に存在する場合、エラーは発生しません。 名前付きパラメーターを使用しない場合は、 @local を指定する必要があります。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

サーバー オプションを設定またはクリアするには、 sp_serveroptionを使用します。

sp_addserver は、ユーザー定義トランザクション内では使用できません。

sp_addserverを使用してリモート サーバーを追加することは廃止されました。 代わりに sp_addlinkedserver を使用してください。

sp_addserverを使用してローカル サーバー名を変更すると、可用性グループまたはレプリケーションを使用するときに、望ましくない影響やサポートされていない構成が発生する可能性があります。

アクセス許可

setupadmin 固定サーバー ロールのメンバーシップが必要です。

次の例では、SQL Server をホストしているコンピューターの名前のデータベース エンジン エントリをACCOUNTSに変更します。

EXEC sp_addserver 'ACCOUNTS', 'local';