リモート サーバー
SQL Server では、旧バージョンとの互換性を保つ目的でのみ、リモート サーバーがサポートされています。 新しいアプリケーションでは、リモート サーバーではなく、リンク サーバーを使用してください。 詳細については、「リンク サーバー (データベース エンジン)」を参照してください。
リモート サーバーを構成することによって、SQL Server のインスタンスに接続しているクライアントは、新たに接続を確立することなく、SQL Server の別のインスタンスでストアド プロシージャを実行できます。 クライアントが接続するサーバーは、クライアントからの要求を受け、この要求をクライアントの代わりにリモート サーバーに送信します。 リモート サーバーが、要求を処理し、要求を行ったサーバーに結果を返します。 結果を受け取ったサーバーは、結果をクライアントに渡します。 リモート サーバーを構成する場合は、セキュリティをどのように確立するかを検討する必要もあります。
サーバー構成を設定して、別のサーバー上のストアド プロシージャを実行できるようにする場合に、まだリモート サーバーを構成していない場合は、リモート サーバーの代わりにリンク サーバーを使用してください。 リンク サーバーではストアド プロシージャと分散クエリの両方を使用できます。これに対して、リモート サーバーで使用できるのはストアド プロシージャだけです。
リモート サーバーの詳細
リモート サーバーは、組で設定します。 1 組のリモート サーバーを設定するには、両方のサーバーが相互にリモート サーバーとして認識できるように構成します。
通常は、リモート サーバーの構成オプションを設定する必要はありません。 SQL Server により、ローカル コンピューターとリモート コンピューターの両方にリモート サーバー接続を可能にする既定値が設定されます。
リモート サーバー アクセスが機能するには、ローカルとリモートの両方のコンピューターで remote access 構成オプションが 1 に設定されている必要があります (これは既定の設定です)。remote access は、リモート サーバーからのログインを制御するオプションです。 この構成オプションを再設定するには、Transact-SQL の sp_configure ストアド プロシージャまたは SQL Server Management Studio を使用します。 SQL Server Management Studio を使用してこのオプションを設定する場合は、[サーバーのプロパティ] の [接続] ページで [このサーバーへのリモート接続を許可する] チェック ボックスをオンにします。 [サーバーのプロパティ] の [接続] ページにアクセスするには、オブジェクト エクスプローラーでサーバー名を右クリックし、[プロパティ] をクリックします。 [サーバーのプロパティ] ページで、[接続] ページをクリックします。
ローカル サーバーからリモート サーバー構成を無効にすると、組になっているリモート サーバー上のユーザーはそのローカル サーバーにアクセスできなくなります。
リモート サーバーのセキュリティ
リモート サーバーに対する RPC (リモート プロシージャ コール) を有効にするには、そのリモート サーバーでログイン マッピングを設定する必要があります。場合によっては、SQL Server のインスタンスを実行しているローカル サーバーでの設定も必要になります。 SQL Server では、RPC は既定で無効になっています。 この構成により、攻撃可能な領域を減らしてサーバーのセキュリティを強化できます。 RPC を使用する場合は、事前にこの機能を有効にする必要があります。 詳細については、「sp_configure (Transact-SQL)」を参照してください。
リモート サーバーのセットアップ
リモート ログインのマッピングは、リモート サーバーで設定する必要があります。 リモート サーバーはこれらのマッピングを使用して、指定のサーバーから RPC 接続用に受信したログインをローカル ログインにマップします。 リモート ログインのマッピングは、リモート サーバーで sp_addremotelogin ストアド プロシージャを使用して設定できます。
注 |
---|
SQL Server では、sp_remoteoption の trusted オプションがサポートされていません。 |
ローカル サーバーのセットアップ
SQL Server 認証のローカル ログインの場合、ローカル サーバーでログインのマッピングを設定する必要はありません。 SQL Server では、リモート サーバーへの接続にローカル ログインとパスワードが使用されます。 Windows 認証のログインの場合は、ローカル ログインのマッピングをローカル サーバーで設定します。このマッピングでは、SQL Server のインスタンスがリモート サーバーに RPC 接続する際に使用するログインとパスワードを定義します。
Windows 認証で作成されたログインの場合は、sp_addlinkedservlogin ストアド プロシージャを使用して、ログイン名とパスワードへのマッピングを作成する必要があります。 このログイン名とパスワードは、sp_addremotelogin によって作成され、リモート サーバーが予期していた受信ログイン名とパスワードに一致している必要があります。
注 |
---|
可能な場合は、Windows 認証を使用します。 |
リモート サーバーのセキュリティの例
serverSend と serverReceive という SQL Server インストールがあるとします。 serverReceive は、Sales_Mary という serverSend からの受信ログインを、serverReceive の Alice という SQL Server 認証のログインにマップするように構成されています。 serverSend からの Joe という別の受信ログインは、serverReceive の Joe という SQL Server 認証のログインにマップされます。
次の Transact-SQL コードの例では、serverReceive に対して RPC を実行するように serverSend を構成しています。
--Create remote server entry for RPCs
--from serverSend in serverReceive.
EXEC sp_addserver 'serverSend';
GO
--Create remote login mapping for login 'Sales_Mary' from serverSend
--to Alice.
EXEC sp_addremotelogin 'serverSend', 'Alice', 'Sales_Mary';
GO
--Create remote login mapping for login Joe from serverReceive
--to same login.
--Assumes same password for Joe in both servers.
EXEC sp_addremotelogin 'serverSend', 'Joe', 'Joe';
GO
serverSend では、Windows 認証のログイン Sales\Mary をログイン Sales_Mary に変換するようにローカル ログインのマッピングが作成されます。 serverReceive には Joe に対するマッピングがあり、既定では同じログイン名とパスワードが使用されるので、Joe のローカル マッピングは不要です。
--Create a remote server entry for RPCs from serverReceive.
EXEC sp_addserver 'serverReceive';
GO
--Create a local login mapping for the Windows authenticated login.
--Sales\Mary to Sales_Mary. The password should match the
--password for the login Sales_Mary in serverReceive.
EXEC sp_addlinkedsrvlogin 'serverReceive', false, 'Sales\Mary',
'Sales_Mary', '430[fj%dk';
GO
ローカル サーバーまたはリモート サーバーのプロパティの表示
xp_msver 拡張ストアド プロシージャを使用すると、ローカル サーバーまたはリモート サーバーのサーバー属性を確認できます。 これらの属性には、SQL Server のバージョン番号、コンピューターのプロセッサの種類と数、およびオペレーティング システムのバージョンが格納されています。 リモート サーバーのデータベース、ファイル、ログイン、およびツールを、ローカル サーバーで表示できます。 詳細については、「xp_msver (Transact-SQL)」を参照してください。