

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

# 在 RDS for SQL Server 與 Amazon S3 之間傳輸檔案
<a name="Appendix.SQLServer.Options.S3-integration.using"></a>

您可以使用 Amazon RDS 預存程序，在 Amazon S3 與 RDS 資料庫執行個體之間下載和上傳檔案。您也可以使用 Amazon RDS 預存程序，列出和刪除 RDS 執行個體上的檔案。

您自 S3 下載和上傳至 S3 的檔案會存放在 `D:\S3` 資料夾。您只有透過此資料夾才能存取您的檔案。您可以將檔案組織成子資料夾，在下載期間，當您包含目的地資料夾時，將為您建立這些子資料夾。

您需要提供 S3 儲存貯體和檔案的 Amazon Resource Name (ARN)，才能使用某些預存程序。ARN 的格式為 `arn:aws:s3:::amzn-s3-demo-bucket/file_name`。Amazon S3 不需要 ARNs中的帳戶號碼或 AWS 區域。

S3 整合任務循序執行，與原生備份和還原任務共同相同的佇列。不論何時，此佇列中最多只能有兩個任務在進行。可能需要五分鐘後，任務才會開始處理。

## 將 Amazon S3 儲存貯體中的檔案下載至 SQL Server 資料庫執行個體
<a name="Appendix.SQLServer.Options.S3-integration.using.download"></a>

若要將 S3 儲存貯體中的檔案下載至 RDS for SQL Server 資料庫執行個體，請使用 Amazon RDS 預存程序 `msdb.dbo.rds_download_from_s3` 並搭配下列參數。


| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  必要  |  要下載之檔案的 S3 ARN，例如：`arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  選用  |  RDS 執行個體的檔案路徑。若沒有指定，則檔案路徑為 `D:\S3\<filename in s3>`。RDS 支援絕對路徑和相對路徑。如果您要建立子資料夾，請將子資料夾包含在檔案路徑中。  | 
|  `@overwrite_file`  |  INT  |  0  |  選用  | 覆寫現有檔案： 0 = 不覆寫 1 = 覆寫 | 

您可以下載沒有副檔名的檔案以及具有下列副檔名的檔案：.bcp、.csv、.dat、.fmt、.info、.lst、.tbl、.txt 和 .xml。

**注意**  
啟用 SQL Server Integration Services 時，可支援下載具有 .ispac 副檔名的檔案。如需如何啟用 SSIS 的詳細資訊，請參閱 [SQL Server Integration Services](Appendix.SQLServer.Options.SSIS.md)。  
啟用 SQL Server Analysis Services 時，可支援下載具有下列副檔名的檔案：.abf、.asdatabase、.configsettings、.deploymentoptions、.deploymenttargets 和 .xmla。如需如何啟用 SSAS 的詳細資訊，請參閱 [SQL Server Analysis Services](Appendix.SQLServer.Options.SSAS.md)。

下列範例顯示從 S3 下載檔案的預存程序。

```
exec msdb.dbo.rds_download_from_s3
	    @s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/bulk_data.csv',
	    @rds_file_path='D:\S3\seed_data\data.csv',
	    @overwrite_file=1;
```

範例 `rds_download_from_s3` 操作在 `seed_data` 中建立名為 `D:\S3\` 的資料夾 (如果此資料夾尚不存在)。然後，範例從 S3 將來源檔案 `bulk_data.csv` 下載至資料庫執行個體上名為 `data.csv` 的新檔案。因為 `@overwrite_file` 參數設為 `1`，如果檔案已事先存在，則會覆寫檔案。

## 從 SQL Server 資料庫執行個體將檔案上傳至 Amazon S3 儲存貯體
<a name="Appendix.SQLServer.Options.S3-integration.using.upload"></a>

若要從 RDS for SQL Server 資料庫執行個體將檔案上傳送至 S3 儲存貯體，請使用 Amazon RDS 預存程序 `msdb.dbo.rds_upload_to_s3` 並搭配下列參數。


| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  必要  |  要在 S3 中建立之檔案的 S3 ARN，例如：`arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  必要  | 要上傳至 S3 之檔案的檔案路徑。支援絕對和相對路徑。 | 
|  `@overwrite_file`  |  INT  |  –  |  選用  |  覆寫現有檔案： 0 = 不覆寫 1 = 覆寫  | 

下列範例從指定的位置 `data.csv` 中，將名為 `D:\S3\seed_data\` 的檔案，上傳至以 ARN 指定的 S3 儲存貯體中的檔案 `new_data.csv`。

```
exec msdb.dbo.rds_upload_to_s3 
		@rds_file_path='D:\S3\seed_data\data.csv',
		@s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/new_data.csv',
		@overwrite_file=1;
```

因為 @overwrite\$1file 參數設為 `1`，如果檔案已事先存在於 S3，則會覆寫檔案。