リンクサーバーに接続する方法についてのチュートリアル


Linked Serverは、SQL Serverが別のSQL ServerインスタンスやOracleデータベースなどの別のODBCデータベースと直接対話する方法です。


この記事では、簡単な手順でリンクサーバーを設定する方法をお見せします!

環境

  • OS : Windows
  • データベース管理システム:SQL Server

    私のしていること


    SQLサーバー上のテーブルとデータを表示できるように、gupta sqlbaseとSQL Serverを接続します.

    ステップ1


    ODBCデータソース管理者.
    Windows ODBCデータソース管理者パネルを開き、Windows管理ツールの下で[スタート]メニューに移動し、ODBCデータソースを選択します.

    ステップ2


    パネルで、ユーザーDSN上のシステムDSNを選択します.

    なぜ?


    ユーザーDSNタブは、このコンピューター上で現在ログオンしているユーザーのみのデータソースを表示します.システムDSNの下でデータソースを作成している間、それはこのコンピュータに記録されるどんなユーザーにでも利用できます.
    「新規データソース」ダイアログを開き、データソースを設定するドライバを選択します.私の場合、SQL Server用のgupta SQLベースです.
  • データソース名:この接続
  • に名前を与えます
  • データベース名:
  • を取得するDB名
  • サーバ名:ターゲットDBサーバ
  • ユーザ名とパスワード:パスワード
  • のあなたの選択

    NOTES: Test connectivity on created DSN.


    ステップ3


    SQL Server 2019に移動し、新しいリンクサーバーを作成する新しいスクリプトを生成します.
    スクリプトは以下のように書かれています.

    手順2から[データベースソース名]フィールドを作成したデータソース名に置き換えます.
    USE [master]
    GO
    /****** Object:  LinkedServer [Database Source Name]    Script Date: 8/11/2021 1:07:38 PM ******/
    EXEC master.dbo.sp_addlinkedserver @server = N'Database Source Name', @srvproduct=N'Database Source Name', @provider=N'MSDASQL', @datasrc=N'Database Source Name'
     /* For security reasons the linked server remote logins password is changed with password */
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'Database Source Name',@useself=N'False',@locallogin=NULL,@rmtuser=N'SYSADM',@rmtpassword='password'
    GO
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'collation compatible', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'data access', @optvalue=N'true'
    GO
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'dist', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'pub', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'rpc', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'rpc out', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'sub', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'connect timeout', @optvalue=N'0'
    GO
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'collation name', @optvalue=null
    GO
    
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'lazy schema validation', @optvalue=N'false'
    GO
    
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'query timeout', @optvalue=N'0'
    GO
    
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'use remote collation', @optvalue=N'true'
    GO
    
    EXEC master.dbo.sp_serveroption @server=N'Database Source Name', @optname=N'remote proc transaction promotion', @optvalue=N'true'
    GO
    
    

    ステップ4


    サーバーオブジェクトタブの下にリンクされたサーバーに移動してサーバーオブジェクトを更新します.
    接続が表示され、ソースデータベースからすべてのテーブルを見るには展開できます.

    ステップ5


    接続がSQL Serverで正常に保存されているかどうかを確認します.

    オプション1 :
    以下のスクリプトを実行します.
    sp_linkedservers;
    
    これはリンクされたサーバーのリストを示します.そして、それはSQL Serverがこの接続を認めたことを意味します、そして

    オプション2 :リンクされたサーバでSELECT文を使用する
    スクリプト
    select * from OPENQUERY(LinkedServer ,'select * from desired_database.schema.table_name' )  Go
    

    ステップ7


    データ転送
    スクリプト
    INSERT INTO targeted_database.dbo.table_name 
    SELECT * FROM OPENQUERY (LinkedServer, 'SELECT * FROM desired_database.schema.table_name)
    Go
    
    そこに行く!