

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用連結的伺服器從 Amazon EC2 上的 Microsoft SQL Server 存取內部部署 Microsoft SQL Server 資料表
<a name="access-on-premises-microsoft-sql-server-tables-from-microsoft-sql-server-on-amazon-ec2-using-linked-servers"></a>

*Tirumala Dasari 和 Eduardo Valentim，Amazon Web Services*

## 總結
<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 EC2 搭配在 Amazon Linux AMI (Amazon Machine Image) 上執行的 Microsoft SQL Server
+ 內部部署 Microsoft SQL Server (Windows) 伺服器與 Windows 或 Linux EC2 執行個體之間的 AWS Direct Connect

**產品版本**
+ SQL Server 2016 或更新版本

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

**來源技術堆疊**
+ 在 Windows 上執行的內部部署 Microsoft SQL Server 資料庫
+ Amazon EC2 搭配在 Windows AMI 或 Linux AMI 上執行的 Microsoft SQL Server

**目標技術堆疊**
+ 在 Amazon Linux AMI 上執行的 Amazon EC2 搭配 Microsoft SQL Server
+ Amazon EC2 搭配在 Windows AMI 上執行的 Microsoft SQL Server

**來源和目標資料庫架構**

![\[AWS 雲端 architecture with VPC, availability zones, and hybrid environment connecting to on-premises database.\]](http://docs.aws.amazon.com/zh_tw/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 中將身分驗證模式變更為 Windows for SQL Server
<a name="change-authentication-mode-to-windows-for-sql-server-in-windows-sql-server"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 透過 SSMS 連線至 Windows SQL Server。 |  | DBA | 
| 從 Windows SQL Server 執行個體的內容 （按一下滑鼠右鍵） 選單，將 SQL Server 中的身分驗證模式變更為 Windows。 |  | DBA | 

### 重新啟動 Windows MSSQL 服務
<a name="restart-the-windows-mssql-service"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 重新啟動 SQL 服務。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在安全索引標籤中，開啟登入的內容 （按一下滑鼠右鍵） 選單，然後選取新的登入。 |  | DBA | 
| 在一般索引標籤中，選擇 SQL Server 身分驗證、輸入使用者名稱、輸入密碼，然後確認密碼，並清除在下次登入時變更密碼的選項。 |  | DBA | 
| 在伺服器角色索引標籤中，選擇公有。 |  | DBA | 
| 在使用者映射索引標籤中，選擇您要存取的資料庫和結構描述，然後反白顯示資料庫以選取資料庫角色。 | 選取公有和 db\$1datareader 以從資料庫資料表存取資料。 | DBA | 
| 選擇確定以建立使用者。 |  | DBA | 

### 將 Windows SQL Server IP 新增至 Linux SQL Server 主機檔案
<a name="add-windows-sql-server-ip-to-linux-sql-server-host-file"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 透過終端機視窗連線至 Linux SQL Server 方塊。 |  | DBA | 
| 開啟 /etc/hosts 檔案，並使用 SQL Server 新增 Windows 機器的 IP 地址。 |  | DBA | 
| 儲存主機檔案。 |  | DBA | 

### 在 Linux SQL Server 上建立連結的伺服器
<a name="create-linked-server-on-linux-sql-server"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用預存程序 master.sys.sp\$1addlinkedserver 和 master.dbo.sp\$1addlinkedsrvlogin 建立連結的伺服器。 | 如需使用這些預存程序的詳細資訊，請參閱*其他資訊*一節。 | DBA、開發人員 | 

### 驗證在 SSMS 中建立的連結伺服器和資料庫
<a name="verify-the-created-linked-server-and-databases-in-ssms"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 SSMS 的 Linux SQL Server 中，前往連結的伺服器並重新整理。 |  | DBA | 
| 在左側窗格中展開建立的連結伺服器和目錄。 | 您將看到選取的 SQL Server 資料庫，其中包含資料表和檢視。 | DBA | 

### 確認您可以存取 Windows SQL Server 資料庫資料表
<a name="verify-that-you-can-access-windows-sql-server-database-tables"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 SSMS 查詢視窗中，執行查詢：「從 【sqllin】.dms\$1sample\$1win.dbo.mlb\$1data 選取前 3 \$1」。 | 請注意， FROM 子句使用四部分語法： computer.database.schema.table （例如 SELECT 名稱 "SQL2 database" FROM 【sqllin】.master.sys.databases)。在我們的範例中，我們在主機檔案中建立了 SQL2 的別名，因此您不需要在方括號之間輸入實際的 NetBIOS 名稱。如果您確實使用實際的 NetBIOS 名稱，請注意，AWS 預設為 NetBIOS 名稱，例如 Win-xxxx，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 Server 的版本備註](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 Server 到 Windows SQL Server （如此模式所述）
+ 透過連結伺服器將 Windows SQL Server 轉換為 Linux SQL Server
+ 透過連結伺服器將 Linux SQL Server 連線到另一個 Linux SQL Server