

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# リンクサーバーを使用して Amazon EC2 上のMicrosoft SQL サーバーからオンプレミスの Microsoft SQL Server テーブルにアクセスする
<a name="access-on-premises-microsoft-sql-server-tables-from-microsoft-sql-server-on-amazon-ec2-using-linked-servers"></a>

*Amazon Web Services、Tirumala Dasari、Eduardo Valentim*

## 概要
<a name="access-on-premises-microsoft-sql-server-tables-from-microsoft-sql-server-on-amazon-ec2-using-linked-servers-summary"></a>

このパターンは、リンクサーバーを使用して Amazon Elastic Compute Cloud (Amazon EC2) Windows または Linux インスタンスで実行またはホストされている Microsoft SQL Server データベースから、Microsoft Windows 上で実行されているオンプレミスの Microsoft SQL Server データベーステーブルにアクセスする方法を示しています。

## 前提条件と制限事項
<a name="access-on-premises-microsoft-sql-server-tables-from-microsoft-sql-server-on-amazon-ec2-using-linked-servers-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Amazon Linux AMI で実行されている Microsoft SQL Server を使用した Amazon EC2 (Amazon Machine Image)
+ オンプレミスのMicrosoft SQL サーバー (Windows) サーバーと Windows または Linux の EC2 インスタンス間の AWS Direct Connect

**製品バージョン**
+ SQL Server 2016 以降

## アーキテクチャ
<a name="access-on-premises-microsoft-sql-server-tables-from-microsoft-sql-server-on-amazon-ec2-using-linked-servers-architecture"></a>

**ソーステクノロジースタック**
+ Windows 上で稼働するオンプレミスのMicrosoft SQL サーバーデータベース
+ Windows AMI または Linux AMI 上で動作するMicrosoft SQL サーバーを搭載した Amazon EC2

**ターゲットテクノロジースタック**
+ Amazon Linux AMI で実行されている Microsoft SQL Server を使用した Amazon EC2
+ Windows AMI で実行されている Microsoft SQL Server を使用した Amazon EC2

ソースとターゲットのデータベースアーキテクチャ

![\[AWS クラウド architecture with VPC, availability zones, and hybrid environment connecting to on-premises database.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/8e4a3222-0850-4980-8028-c710dcdb9186/images/fa157992-0ed9-46e1-8059-0cbbb74a98ec.png)


## ツール
<a name="access-on-premises-microsoft-sql-server-tables-from-microsoft-sql-server-on-amazon-ec2-using-linked-servers-tools"></a>
+ 「[Microsoft SQL Server Management Studio (SSMS)](https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16)」は、SQL Server インフラストラクチャを管理するための統合環境です。SQL Server とやり取りする豊富なスクリプトエディタを備えた、ユーザーインターフェイスとツールグループを備えています。

## エピック
<a name="access-on-premises-microsoft-sql-server-tables-from-microsoft-sql-server-on-amazon-ec2-using-linked-servers-epics"></a>

### Windows SQL Server の SQL Server の認証モードを Windows に変更します。
<a name="change-authentication-mode-to-windows-for-sql-server-in-windows-sql-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SSMS 経由で Windows SQL サーバーに接続します。 |  | DBA | 
| Windows SQL Server インスタンスのコンテンツ (右クリック) メニューから、SQL Server の認証モードを Windows に変更します。 |  | DBA | 

### Windows MSSQL サービスを再起動します。
<a name="restart-the-windows-mssql-service"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SQL サービスを再起動します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-on-premises-microsoft-sql-server-tables-from-microsoft-sql-server-on-amazon-ec2-using-linked-servers.html) | DBA | 

### Windows SQL Server で新しいログイン情報を作成し、アクセスするデータベースを選択します。
<a name="create-new-login-and-choose-databases-to-access-in-windows-sql-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| [セキュリティ] タブで、[ログイン] のコンテンツ (右クリック) メニューを開き、新しいログインを選択します。 |  | DBA | 
| [全般] タブで [SQL Server 認証] を選択し、ユーザー名を入力し、パスワードを入力してパスワードを確認して、次回のログイン時にパスワードを変更するオプションをオフにします。 |  | DBA | 
| [サーバーロール] タブで [公開] を選択します。 |  | DBA | 
| [User Mapping] タブで、アクセスするデータベースとスキーマを選択し、データベースを強調表示してデータベースロールを選択します。 | public と db\$1datareader を選択して、データベーステーブルのデータにアクセスします。 | DBA | 
| 「OK」を選択してユーザーを作成します。 |  | DBA | 

### Windows SQL サーバー IP を Linux SQL Server ホストファイルに追加します。
<a name="add-windows-sql-server-ip-to-linux-sql-server-host-file"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターミナルウィンドウから Linux SQL Server ボックスに接続します。 |  | DBA | 
| /etc/hosts ファイルを開き、SQL Server がインストールされている Windows マシンの IP アドレスを追加します。 |  | DBA | 
| ホストファイルを保存します。 |  | DBA | 

### Linux SQL サーバー上にリンクサーバーを作成します。
<a name="create-linked-server-on-linux-sql-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ストアドプロシージャ master.sys.sp\$1addlinkedserver と master.dbo.sp\$1addlinkedsrvlogin を使用してリンクサーバーを作成します。 | これらのストアドプロシージャの使用方法の詳細については、「*追加情報*」セクションを参照してください。 | DBA、開発者 | 

### 作成したリンクサーバーとデータベースを SSMS で検証します。
<a name="verify-the-created-linked-server-and-databases-in-ssms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SSMS の Linux SQL Server では、リンクサーバーに移動して更新してください。 |  | DBA | 
| 左側のペインで、作成したリンクサーバーとカタログを展開します。 | 選択した SQL Server データベースがテーブルとビューとともに表示されます。 | DBA | 

### Windows SQL サーバーデータベーステーブルにアクセスできることを確認してください。
<a name="verify-that-you-can-access-windows-sql-server-database-tables"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SSMS クエリウィンドウで、「select top 3 \$1 from [sqllin].dms\$1sample\$1win.dbo.mlb\$1data」というクエリを実行します。 | FROM 句は computer.database.schema.table という 4 つの部分からなる構文を使用していることに注意してください (例えば、[sqllin] .master.sys.databases から「SQL2 データベース」という名前を選択)。この例では、ホストファイルに SQL2 のエイリアスを作成したので、角括弧の間に実際の NetBIOS 名を入力する必要はありません。実際の NetBIOS 名を使用する場合は、AWS ではデフォルトで Win-xxxx などの NetBIOS 名が使用され、SQL Server ではダッシュ付きの名前には角括弧が必要であることに注意してください。 | DBA、開発者 | 

## 関連リソース
<a name="access-on-premises-microsoft-sql-server-tables-from-microsoft-sql-server-on-amazon-ec2-using-linked-servers-resources"></a>
+ 「[Linux 上の SQL サーバーのリリースノート](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes?view=sql-server-2017)」 

 

## 追加情報
<a name="access-on-premises-microsoft-sql-server-tables-from-microsoft-sql-server-on-amazon-ec2-using-linked-servers-additional"></a>

ストアドプロシージャを使用してリンクサーバーを作成する

SSMS は Linux SQL Server 用のリンクサーバーの作成をサポートしていないため、以下のストアドプロシージャを使用して作成する必要があります。

```
EXEC master.sys.sp_addlinkedserver @server= N'SQLLIN' , @srvproduct= N'SQL Server'    
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'SQLLIN',@useself=N'False',@locallogin=NULL,@rmtuser=N'username',@rmtpassword='Test123$'
```

注 1: Windows SQL Server で以前に作成したサインイン認証情報をストアドプロシージャ `master.dbo.sp_addlinkedsrvlogin` に入力します。

注 2: `@server` の名前 `SQLLIN` とホストファイルエントリ名 `172.12.12.4 SQLLIN` は同じでなければなりません。

 このプロセスを使用して、以下のシナリオで、リンクサーバーを作成できます。
+ (このパターンで指定されているように) リンクサーバーを経由して Linux SQL サーバーから Windows SQL サーバーへ
+ リンクサーバーを経由して Windows SQL サーバーから Linux SQL サーバーへ
+ Linux SQL サーバーからリンクサーバー経由で別の Linux SQL サーバーへ