sql >> データベース >  >> RDS >> Sqlserver

異なるサーバー上の2つのデータベース内の2つのテーブルを結合してデータを照会する

    sp_addlinkedserverを使用する必要があります サーバーリンクを作成します。使用法については、リファレンスドキュメントを参照してください。サーバーリンクが確立されたら、データベース名の前に他のサーバーを追加するだけで、通常どおりクエリを作成します。 I.E:

    -- FROM DB1
    SELECT *
    FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
        INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
            ON tab1.ID = tab2.ID
    

    リンクが確立されたら、OPENQUERYを使用することもできます リモートサーバーでSQLステートメントを実行し、データのみを転送します。これは少し速くなる可能性があり、リモートサーバーがクエリを最適化できるようになります。 DB1の一時(またはメモリ内)テーブルにデータをキャッシュする場合 上記の例では、標準のテーブルを結合するのと同じようにクエリを実行できます。例:

    -- Fetch data from the other database server
    SELECT *
    INTO #myTempTable
    FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')
    
    -- Now I can join my temp table to see the data
    SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
        INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID
    

    その他の例については、OPENQUERYのドキュメントを確認してください。上記の例はかなり工夫されています。この特定の例では間違いなく最初の方法を使用しますが、OPENQUERYを使用する2番目のオプション クエリを使用して一部のデータを除外すると、時間とパフォーマンスを節約できます。



    1. cordovaを使用してプロジェクトファイルにローカルに保存されているSqliteデータベースファイル[アセットフォルダ]にアクセスして更新する方法

    2. OracleでSYSDATEのUTC値を取得する方法

    3. SQLServer2017でのCLRの厳格なセキュリティ

    4. コードでは非常に遅いが、SSMSでは速いクエリ