リモート接続、データリンク、オブジェクトエクスプローラー:T-SQLで別のSQLサーバーに接続するその他の方法

2024-04-06

T-SQL構文を使用して別のSQLサーバーに接続する方法

リンクサーバーを使用する

リンクサーバーは、別のSQLサーバーへの接続を抽象化する仮想サーバーです。リンクサーバーを作成すると、そのサーバー上のデータベースに対して、ローカルサーバー上のデータベースと同じようにクエリを実行することができます。

  1. リンクサーバーのプロパティ ダイアログボックスで、以下の情報を指定します。

    • リンクサーバー名: 接続するサーバーの名前
    • サーバーの種類: 接続先のサーバーの種類 (SQL Server、Oracleなど)
    • プロバイダー: 接続に使用されるプロバイダー (SQL Server Native Clientなど)
    • 接続: 接続先のサーバーのインスタンス名とデータベース名

リンクサーバーを使用してクエリを実行する手順

  1. SSMS で、クエリを実行したいデータベースを選択します。
  2. クエリエディターで、以下の構文を使用してクエリを実行します。
SELECT *
FROM [リンクサーバー名].[データベース名].[スキーマ名].[テーブル名]

例:

SELECT *
FROM [SRV2].[AdventureWorks2019].[dbo].[Customers]

このクエリは、SRV2 という名前のサーバー上の AdventureWorks2019 データベースの dbo スキーマにある Customers テーブルからすべてのデータを取得します。

OPENQUERY は、別のサーバー上のデータベースに対して直接クエリを実行する関数です。OPENQUERY を使用すると、リンクサーバーを作成することなく、別のサーバー上のデータにアクセスすることができます。

OPENQUERY を使用してクエリを実行する手順

SELECT *
FROM OPENQUERY([接続文字列], 'SELECT * FROM [データベース名].[スキーマ名].[テーブル名]')
SELECT *
FROM OPENQUERY('Data Source=SRV2;Initial Catalog=AdventureWorks2019', 'SELECT * FROM [dbo].[Customers]')
  • 複数のサーバーに頻繁に接続する必要がある場合は、リンクサーバーを使用すると便利です。
  • 偶発的に別のサーバー上のデータにアクセスする必要がある場合は、OPENQUERY を使用すると便利です。



リンクサーバーを使用する

-- リンクサーバーを作成する
EXEC sp_addlinkedserver
@server_name = 'SRV2',
@provider_name = 'SQLNCLI11',
@data_source = 'SRV2',
@catalog_name = 'AdventureWorks2019';

-- リンクサーバーを使用してクエリを実行する
SELECT *
FROM [SRV2].[AdventureWorks2019].[dbo].[Customers]

OPENQUERYを使用する

-- OPENQUERYを使用してクエリを実行する
SELECT *
FROM OPENQUERY('Data Source=SRV2;Initial Catalog=AdventureWorks2019', 'SELECT * FROM [dbo].[Customers]')

注意事項

  • 上記のサンプルコードは、SQL Server 2019 を使用しています。他のバージョンの SQL Server を使用している場合は、構文が異なる場合があります。
  • 接続先のサーバーにアクセスできる権限を持っていることを確認してください。
  • データベース名、スキーマ名、テーブル名などは、環境に合わせて変更してください。



T-SQLを使用して別のSQLサーバーに接続するその他の方法

リモート接続を使用する

リモート接続は、SQL Server Management Studio (SSMS) を使用して別のサーバー上のデータベースに接続する方法です。リモート接続を使用すると、ローカルサーバー上のデータベースと同じように、別のサーバー上のデータベースを管理することができます。

    • 認証: 接続に使用される認証方法 (Windows 認証、SQL Server 認証など)

データリンクを使用する

データリンクは、別のサーバー上のデータベースへの接続情報を保存するためのファイルです。データリンクを作成すると、SSMS やその他のアプリケーションから簡単に接続することができます。

  1. SSMS で、オブジェクトエクスプローラー > データ接続 を展開します。
  2. データソースの選択 ページで、SQL Server を選択し、次へ をクリックします。
  3. サーバー名 ページで、接続するサーバーの名前とデータベース名を選択します。
  4. 認証 ページで、接続に使用される認証方法を選択します。
  5. 完了 ページで、データリンクの名前と保存場所を指定し、OK をクリックします。
  1. クエリ エディター で、標準 ツールバーの 接続 ドロップダウンリストから作成したデータリンクを選択します。

SSMS のオブジェクトエクスプローラーを使用して、別のサーバー上のデータベースに接続することもできます。

オブジェクトエクスプローラーを使用して接続する手順

  • 頻繁に別のサーバーに接続する必要がある場合は、リモート接続またはデータリンクを使用すると便利です。

上記の情報は参考用であり、予告なく変更される場合があります。


sql-server t-sql stored-procedures


SQL Serverでバイナリデータを格納する:VarBinary vs Image

VarBinary可変長バイナリデータ型最大8000バイトまで格納可能VarBinary(n) のように、格納する最大バイト数を指定して使用例:VarBinary(100) は最大100バイトのバイナリデータを格納可能Image最大2GBまで格納可能...


NOLOCK ヒントの代替手段:ロック競合を回避し、パフォーマンスを向上させる方法

NOLOCK の利点と欠点利点:ロック競合を回避し、クエリのパフォーマンスを向上させる可能性があります。読み取り専用のワークロードに適しています。データの整合性を損なう可能性があります。更新操作との併用は避けるべきです。副作用を伴う操作には使用しないでください。...


【C# コード付き】SQL Server 接続文字列でポート番号を指定してデータベース操作を行う方法

デフォルトのポート番号通常、SQL Server は 1433 というポート番号を使用します。しかし、別のポート番号を使用するように設定することもできます。ポート番号を指定する必要がある場合以下の場合、接続文字列でポート番号を指定する必要があります。...


SQL Server 2008:上位1000行の削除を安全かつ効率的に行うためのベストプラクティス

SQL Server 2008を使用して、テーブルの上位1000行を効率的に削除する方法について説明します。2つの方法をご紹介します。方法1: DELETE ステートメントを使用する最も単純な方法は、DELETEステートメントとORDER BY句を使用して、削除する行を指定することです。以下の例では、mytableテーブルの上位1000行を削除します。...


PowerShell スクリプトを使って SQL Server テーブルのデータを INSERT 文としてエクスポートする方法

このチュートリアルでは、SQL Server テーブルのデータを、別のデータベースやファイルに挿入できる SQL INSERT 文形式にエクスポートする方法をいくつか紹介します。方法SELECT INTO 構文を使用するこれは、テーブルのデータを INSERT 文として直接ファイルに書き出す最も簡単な方法です。...