SQLServerで他のSQLServerのデータベースを参照する

データベースSQLServer,データベース

記事内に広告が含まれています。

SQLServerで他のSQLServerのデータベースを参照する方法を紹介します。

コーディング例

BEGIN
    DECLARE @DataSource    VARCHAR(MAX) = 'localhost\MSSQL';
    DECLARE @LoginUserID   VARCHAR(MAX) = 'sa';
    DECLARE @LoginPassword VARCHAR(MAX) = 'xxxxxxxxxx';

    EXEC sp_addlinkedserver
             @server     = 'LINKSRV'
            ,@srvproduct = ''
            ,@provider   = 'SQLNCLI'
            ,@datasrc    = @DataSource
    ;

    EXEC sp_addlinkedsrvlogin
             @rmtsrvname  = 'LINKSRV'
            ,@useself     = 'FALSE'
            ,@locallogin  = @LoginUserID
            ,@rmtuser     = @LoginUserID
            ,@rmtpassword = @LginPassword
    ;

    SELECT * FROM [LINKSRV].[TestDB].dbo.TestTable; 
END

解説

6行目の「sp_addlinkedserver」というシステムストアドプロシージャを実行し、リンクサーバを作成しています。
引数@serverに作成するリンクサーバの名前、引数@srvproductはリンクサーバとして追加するOLE DBデータソースを指定しますが、相手がSQLServerの場合は指定しません。引数@providerに「SQLNCLI」を指定すると自動的に一番新しい Server Native Client OLE DB Provider を選択してくれます。引数@datasrcへ接続するSQLServerのデータソース名を「(IPアドレスまたはサーバ名)\(インスタンス名)」で指定します。

次に13行目の「sp_addlinkedsrvlogin」というシステムストアドプロシージャを実行し、ローカルのSQLServer上のログインとリンクサーバ上のリモートログインとのマッピングを自動生成します。
引数@rmtsrvnameに「sp_addlinkedserver」で作成したリンクサーバ名を指定し、引数@useselfに「FALSE」を指定しSQLServer認証を選択しています。「TRUE」を指定するとWindows認証となります。引数@localloginにローカルサーバ上のログインを指定し、引数@rmtuser、@rmtpasswordにリンクサーバのリモートログインとパスワードを指定します。

リンクサーバ上のテーブルを参照するには21行目のように「リンクサーバ名」.「データベース名」.「スキーマ名」.「テーブル名」と記載します。
リンクサーバを使用することでローカルサーバ上のテーブルとリンクサーバ上のテーブルを表結合することも可能です。

以上、SQLServerで他のSQLServerのデータベースを参照する方法のご紹介でした。

システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ