

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

# 上傳 DDL 檔案 （離線工作流程）
<a name="sql-server-offline-transformation"></a>

在此工作流程中， AWS Transform 完全從上傳的 DDL 檔案現代化您的結構描述，不需要直接連線至資料庫。您可以針對 SQL Server 執行提供的擷取指令碼、上傳產生的結構描述檔案，以及 AWS 轉換探索、評估、轉換和部署結構描述至 Amazon Aurora PostgreSQL。當您的資料庫無法公開至直接連線，或您希望在授予網路存取之前進行可行性評估和結構描述轉換時，請選擇此工作流程。

**重要**  
離線工作流程只會轉換和部署您的結構描述。它不會遷移真實資料。如果可用，您可以產生合成測試資料來驗證目標。如果您需要遷移真實資料，請使用 AWS DMS 主控台建立新的資料遷移專案。

## 離線工作流程的先決條件
<a name="sql-server-offline-prerequisites"></a>
+ 支援的 SQL Server 版本 (2008 R2 到 2022，所有版本）。
+ **PowerShell 7 或更新版本**來執行擷取指令碼。PowerShell 已預先安裝在 Windows 上。在 macOS 或 Linux 上安裝 PowerShell 7\+ 並使用 執行指令碼`pwsh`。請參閱 [Microsoft 安裝指南](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell)。
+ PATH 上可用的`sqlcmd`公用程式。請參閱 [sqlcmd 公用程式](https://learn.microsoft.com/en-us/sql/tools/sqlcmd/sqlcmd-utility)。
+ 至少具有 和 `VIEW ANY DEFINITION`許可`VIEW SERVER STATE`的 SQL Server 身分驗證登入 （使用者名稱和密碼）。指令碼不支援 Windows 或網域身分驗證。
+ 啟用 IAM Identity Center 或 IAM 身分驗證後期階段 AWS 的帳戶 （建立 Aurora PostgreSQL 目標並部署轉換後的結構描述）。
+ 結構描述分析和轉換階段 AWS 不需要對 進行傳入或傳出資料庫連線。

## 工作流程步驟
<a name="sql-server-offline-workflow-steps"></a>

1. **上傳 DDL 檔案** — AWS Transform 在聊天中提供擷取指令碼的下載按鈕。針對 SQL Server 下載並執行指令碼。選擇性地限制擷取到具有逗號分隔包含清單 （不區分大小寫） 的特定資料庫。指令碼會產生 SQL DDL 檔案`.zip`的時間戳記。使用聊天上傳按鈕上傳 `.zip`（或個別`.sql`檔案）。

1. **探索** – AWS 轉換會剖析上傳的檔案，並依資料庫分組為資料庫物件 （資料表、預存程序、檢視、觸發條件、索引、限制條件、序列等） 編製目錄。您可以檢閱每個資料庫摘要，然後選擇要評估的資料庫。如果某些陳述式無法剖析， AWS Transform 會報告問題，並可讓您繼續使用剖析的物件、選擇特定資料庫或上傳更正的檔案。

1. **評估**： AWS Transform 會評估所選資料庫的轉換可行性，並產生可下載的報告，其中包含執行摘要、每個資料庫物件摘要，以及level-of-effort (LOE) 估計。自訂 LOE 分數、上傳其他檔案，或繼續轉換。

1. **結構描述轉換**： AWS 轉換會將 SQL Server 結構描述 （包括 T-SQL 預存程序） 轉換為 Aurora PostgreSQL，一次一個資料庫。單一資料庫會自動轉換；使用多個資料庫，您可以選擇要轉換哪個資料庫。資料庫會獨立並平行轉換。

1. **目標佈建** — 對於每個轉換的資料庫， AWS Transform 會在您的帳戶中建立或重複使用 Amazon Aurora PostgreSQL 叢集 AWS 。您可以透過引導式提示選擇聯網和目標組態。

1. **結構描述部署** — AWS Transform 會將轉換後的結構描述套用至 Aurora 叢集。部署後，修正聊天或 IDE 中的剩餘物件、產生合成測試資料 （如果可用） 或完成。

1. **應用程式碼現代化 **（選用） — AWS Transform 可以更新相關聯的 .NET 6\+ 應用程式，以使用 Aurora PostgreSQL。此服務會更新來源碼中的資料庫連線，並修改實體架構和 ADO.NET 中的 ORM 程式碼，以在人工監督的統一工作流程中與 Aurora PostgreSQL 相容。使用適用於 GitHub 和 GitLab 的 AWS CodeConnections 或個人存取字符 (PAT) 連接您的原始碼儲存庫，或為包含原始碼的 zip 檔案提供 S3 URI。

**注意**  
Amazon Aurora PostgreSQL 是此工作流程唯一支援的目標引擎。

## 離線工作流程的服務限制
<a name="sql-server-offline-service-limits"></a>

下列預設限制適用於離線工作流程。有些限制可為每個帳戶設定；請聯絡您的 AWS 客戶團隊請求增加。


| 限制 | 預設 | 適用對象 | 
| --- | --- | --- | 
| 上傳每個任務的大小 | 1，024 MB (1 GB)，跨任務中的所有上傳累積 | 上傳 DDL 檔案 | 
| 每月轉換的資料庫 | 每個帳戶 10 個 | 結構描述轉換 | 
| 每個資料庫的存放程序 | 250 | 結構描述轉換 | 
| 並行結構描述轉換 | 一次 5 個資料庫 | 結構描述轉換 | 
| 並行執行中的任務 | 5 | 每個帳戶 | 
+ 上傳大小限制是每個工作的累積預算。如果您重設輸入設定，預算會清除 （這會捨棄已上傳的檔案，並在相同任務中重新執行探索和評估）。
+ 當您選擇超過 5 個資料庫進行轉換時，其他資料庫會排入佇列，並在執行轉換完成時自動啟動。
+ Storagestored-procedure-per-database 限制絕不會封鎖評估；只會影響結構描述轉換。

## 離線工作流程疑難排解
<a name="sql-server-offline-troubleshooting"></a>

### 擷取指令碼
<a name="sql-server-offline-ts-extraction"></a>
+ **`pwsh: command not found` (macOS/Linux)** — 未安裝 PowerShell 7\+。安裝並執行 `pwsh ./ExtractDatabaseMetadata.ps1`。
+ **參考錯誤 `sqlcmd`** — `sqlcmd`公用程式不在 PATH 上。安裝它，並確保它位於 PATH 上。
+ **登入或許可錯誤**：搭配 `VIEW SERVER STATE`和 使用 SQL Server 身分驗證登入`VIEW ANY DEFINITION`。不支援 Windows/網域身分驗證。
+ **只有一些匯出的資料庫** — 包含清單縮小範圍。在沒有它的情況下重新執行，或指定正確的逗號分隔資料庫名稱。

### 上傳
<a name="sql-server-offline-ts-upload"></a>
+ **使用大小訊息拒絕上傳** — 超過每個工作的上傳預算。上傳較小的檔案，或要求客服人員重設輸入設定，以清除相同任務中的預算。向客服人員詢問目前的剩餘預算，而不是預估。
+ **不接受檔案** — 上傳指令碼`.zip`產生的 或個別`.sql`檔案。將多個檔案壓縮為單一封存。

### 探索
<a name="sql-server-offline-ts-discovery"></a>
+ **偵測到 SQL 語法問題** — 下載問題報告。無錯誤區段中的物件仍會編製目錄。選擇 以繼續剖析的物件、選擇特定資料庫，或上傳更正的檔案。
+ **以通用名稱分組的物件** — 剖析器找不到`USE [Database]`陳述式。出現提示時，請提供正確的資料庫名稱。
+ **找不到物件** — 檔案不包含`CREATE`任何陳述式，或全部無法剖析。重新上傳有效的 DDL。

### 評估
<a name="sql-server-offline-ts-assessment"></a>
+ **LOE 預估注視** — 選擇自訂 LOE 分數、編輯範本並重新上傳以重新產生評估。
+ **遺失物件** — 選擇上傳其他 SQL 檔案；探索和評估會自動重新執行。

### 結構描述轉換
<a name="sql-server-offline-ts-conversion"></a>
+ **資料庫轉換失敗** — AWS 轉換報告原因。回覆要求重試；轉換會重新啟動該資料庫。
+ **回應傳送至錯誤的資料庫** — 當多個資料庫正在等待輸入時，請指定訊息的資料庫。您可以使用 處理特定資料庫`@DatabaseName:`。

### 目標佈建和部署
<a name="sql-server-offline-ts-provisioning"></a>
+ **無法建立 Aurora 叢集** — 完成引導憑證和聯網提示，並確保帳戶具有建立 Aurora PostgreSQL 的許可。
+ **有些物件未部署** — 使用部署後選項來修正聊天或 IDE 中剩餘的物件，然後重新部署。