【保存版】SQL Serverで別DBのテーブルからデータを抽出する方法:6つのアプローチと詳細解説
SQL Serverで別のデータベースのテーブルからデータを抽出する方法
OPENROWSET関数を使用すると、SQL Server以外のデータソースにアクセスすることもできます。この方法は、別のデータベースが同じSQL Serverインスタンスにある場合に便利です。
SELECT *
FROM OPENROWSET('SQL SERVER', 'SERVER=別のデータベースサーバー;DATABASE=別のデータベース名;UID=ユーザー名;PWD=パスワード', 'SELECT * FROM 対象テーブル名')
方法2:分散DMLを使用する
USE 対象データベース名;
EXEC sp_addlinkedserver @server = N'別のデータベースサーバー名', @srvlogin = N'ログイン名', @srvpwd = N'パスワード';
SELECT *
FROM 対象データベース名.dbo.対象テーブル名
- 同じSQL Serverインスタンスにある別のデータベースからデータを抽出する場合は、OPENROWSET関数を使用する方が簡単です。
その他の注意点
- どちらの方法を使用する場合も、対象データベースへのアクセス許可を持っている必要があります。
- 分散DMLを使用する場合は、リンクサーバーを登録する必要があります。
上記以外にも、さまざまな方法で別のデータベースのテーブルからデータを抽出することができます。具体的な方法は、状況によって異なりますので、詳細についてはSQL Serverのマニュアルを参照してください。
SELECT *
FROM OPENROWSET('SQL SERVER', 'SERVER=別のデータベースサーバー;DATABASE=別のデータベース名;UID=ユーザー名;PWD=パスワード', 'SELECT * FROM Customers')
例2:分散DMLを使用して、別のSQL Serverインスタンスにある「Orders」テーブルからデータを抽出する
USE 対象データベース名;
EXEC sp_addlinkedserver @server = N'別のデータベースサーバー名', @srvlogin = N'ログイン名', @srvpwd = N'パスワード';
SELECT *
FROM 対象データベース名.dbo.Orders
説明
- 上記の例では、
別のデータベースサーバー
、別のデータベース名
、ユーザー名
、パスワード
を置き換える必要があります。 対象データベース名
は、データを抽出するデータベース名に置き換えます。
注意事項
- 上記のコードはあくまで一例であり、状況に合わせて変更する必要があります。
- 別のデータベースにアクセスするには、適切な権限を持っている必要があります。
SQL Serverで別のデータベースのテーブルからデータを抽出するその他の方法
方法1:SYSOBJECTSビューを使用する
SYSOBJECTSビューを使用して、別のデータベース内のすべてのオブジェクトを取得できます。このビューには、テーブル名、列名、データ型などの情報が含まれています。この情報を使用して、クエリを動的に生成し、別のデータベースのテーブルからデータを抽出することができます。
SELECT *
FROM OPENROWSET('SQL SERVER', 'SERVER=別のデータベースサーバー;DATABASE=別のデータベース名;UID=ユーザー名;PWD=パスワード', 'SELECT * FROM SYSOBJECTS WHERE type = ''U'' AND name = ''対象テーブル名''')
方法2:SSISパッケージを使用する
SQL Server Integration Services (SSIS)パッケージを使用して、別のデータベースのテーブルからデータを抽出、変換、ロードすることができます。SSISパッケージは、複雑なデータ移行タスクを自動化するために使用できます。
方法3:REST APIを使用する
SQL Serverは、REST APIを介してデータにアクセスできるようにします。このAPIを使用して、別のデータベースのテーブルからデータを抽出することができます。
方法4:Power Automateを使用する
Power Automateを使用して、別のデータベースのテーブルからデータを抽出するワークフローを作成することができます。Power Automateは、コードを書かずにさまざまなタスクを自動化するために使用できるクラウドベースのツールです。
- 少量のデータを抽出する場合は、OPENROWSET関数を使用するのが簡単です。
- 複雑なデータ移行タスクを実行する場合は、SSISパッケージを使用する必要があります。
- 別のアプリケーションからSQL Serverデータにアクセスする場合は、REST APIを使用する必要があります。
- コードを書かずにデータ抽出を自動化したい場合は、Power Automateを使用することができます。
SQL Serverで別のデータベースのテーブルからデータを抽出するには、さまざまな方法があります。どの方法を選択するかは、状況と要件によって異なります。
sql sql-server database