本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SQL Server 現代化工作流程
本節提供使用 AWS 轉換完成 SQL Server 現代化程序的step-by-step演練。
步驟 1:建立 SQL Server 現代化任務
在轉換 AWS 主控台中建立新的轉換任務,開始您的現代化旅程。
登入 AWS Transform 主控台
選擇建立現代化任務
選取 Windows 現代化任務,然後選取 SQL Server 現代化
輸入任務詳細資訊:
任務名稱:專案的描述性名稱
描述:選用描述
部署的目標區域: AWS 區域
選擇 Create job (建立任務)
重要
請勿在任務名稱中包含個人身分識別資訊 (PII)。
步驟 2:連線至 SQL Server 資料庫
將 AWS 轉換連接至 SQL Server 資料庫,以啟用結構描述分析和轉換。
建立資料庫連接器
在您的 SQL Server 現代化任務中,導覽至連線至 資源
選擇連線至 SQL Server 資料庫
選擇建立新連接器
輸入連接器資訊:
Connector 名稱:描述性名稱
AWS 帳戶 ID:SQL Server 託管的帳戶
確認後,您會收到核准的連結。複製核准連結,從您帳戶的 AWS 管理員取得核准。核准後,您就可以繼續進行下一個步驟。
管理員核准連接器請求後,請按一下提交以繼續至原始碼連線設定。
步驟 3:連接原始程式碼儲存庫
AWS 轉換需要存取您的 .NET 應用程式原始程式碼,以分析和轉換與 SQL Server 資料庫互動的程式碼。 AWS 轉換支援提供原始程式碼的三種方法。
選擇您的身分驗證方法
- 個人存取字符 (PAT) 連接器 (建議)
-
最適合需要自訂許可範圍、自我託管供應商支援或存取供應商特定 APIs的團隊,例如 GitHub Secrets。您可以在原始碼提供者中建立具有自訂許可的 PAT、將它存放在 中 AWS Secrets Manager,然後視需要 AWS 進行轉換擷取。您負責管理權杖輪換和過期。
- AWS CodeConnections
-
最適合需要自動憑證管理的團隊。 AWS CodeConnections 使用透過 OAuth 2.0 授權流程處理身分驗證的受管供應商整合。 AWS 會管理整個憑證生命週期,包括自動權杖重新整理和輪換。不需要手動憑證管理。
- Amazon S3
-
將您的原始程式碼直接上傳至 Amazon S3 儲存貯體。 AWS 轉換會在轉換任務期間從儲存貯體存取程式碼。
| 功能 | PAT 連接器 (建議) | AWS CodeConnections |
|---|---|---|
| 憑證管理 | 手動 (客戶受管) | 自動AWS(受管) |
| 字符生命週期 | 需要手動輪換 | 自動重新整理 |
| 許可彈性 | 完全可自訂的範圍 | 已修正許可 |
| 自我託管提供者支援 | 支援 | 不適用 |
| 設定複雜性 | 中等 (手動權杖建立和儲存) | 低 (一次性授權) |
| 字符儲存 | 客戶的 AWS Secrets Manager | AWS受管 |
設定 PAT 連接器 (建議)
使用 PAT 連接器,您可以在具有自訂許可的原始碼提供者中建立個人存取字符,將其安全地存放在 中 AWS Secrets Manager,並視需要 AWS 轉換擷取它。您負責管理字符生命週期,包括輪換和過期。 AWS Transform 會自動建立具有存取秘密許可的必要 IAM 角色。
PAT 連接器支援下列提供者,包括自我託管和自訂 DNS/URL 版本:
GitHub 和 GitHub Enterprise Server
GitLab.com 和 GitLab 自我管理
Bitbucket 雲端和 Bitbucket 資料中心
Azure DevOps 和 Azure DevOps 伺服器
建立個人存取字符
在原始碼提供者中建立 PAT。所需的許可因提供者而異。選擇供應商的索引標籤。
重要
建立後立即複製字符。您無法再次檢視它。設定轉換任務持續時間的過期時間。請勿將過期設定為永不過期。
警告
切勿將 PAT 字符遞交至程式碼儲存庫,或透過不安全的管道共用它們。一律將其存放在 中 AWS Secrets Manager。
GitHub
導覽至設定、開發人員設定、個人存取字符、精細字符。選取要轉換的儲存庫,並授予下列許可。
儲存庫許可
| 權限 | 存取 | 用途 |
|---|---|---|
| 目錄 | 讀取和寫入 | 讀取原始程式碼並將轉換後的程式碼寫回儲存庫 |
| 中繼資料 | 唯讀 | 存取基本儲存庫資訊 |
組織許可 (組織儲存庫需要)
| 權限 | 存取 | 用途 |
|---|---|---|
| 成員 | 唯讀 | 列出可供儲存庫探索字符存取的組織 |
GitLab
導覽至編輯設定檔、存取字符。選取下列範圍。
| Scope (範圍) | 用途 |
|---|---|
read_api |
讀取儲存庫中繼資料、專案資訊、使用者詳細資訊,並列出群組和分支 |
read_repository |
讀取來源碼檔案和儲存庫結構以供分析 |
write_repository |
將轉換的程式碼寫回儲存庫 |
Bitbucket
導覽至帳戶設定、安全性、建立和管理 API 權杖。所需的範圍取決於您的字符類型。
工作區/儲存庫字符 (ATCT — 承載身分驗證,不需要使用者名稱)
| 權限 | 存取 | 用途 |
|---|---|---|
| 儲存庫 | 讀取和寫入 | 列出儲存庫、讀取分支,並透過 git 推送寫入轉換的程式碼 |
帳戶 API 字符 (ATAT — 含電子郵件的基本身分驗證) 或應用程式密碼 (ATBB — 含使用者名稱的基本身分驗證)
| Scope (範圍) | 用途 |
|---|---|
read:account |
識別已驗證的使用者以解析儲存庫成員資格 |
read:workspace:bitbucket |
列出字符可以存取的工作區,以便 AWS 轉換可以列舉其儲存庫。如果您在秘密中指定工作區清單,則不需要。 |
read:repository:bitbucket |
列出儲存庫並讀取中繼資料和分支資訊 |
write:repository:bitbucket |
透過 git 推送將轉換的程式碼寫回儲存庫 |
Azure DevOps
導覽至使用者設定、個人存取字符。選取自訂定義的範圍。針對組織範圍,選擇所有可存取的組織 (建議) 或指定單一組織。
| Scope (範圍) | 存取 | 用途 |
|---|---|---|
| Code | 讀取和寫入 | 讀取原始程式碼、列出儲存庫和分支,以及將轉換後的程式碼寫回 |
| 使用者設定檔 | 讀取 | 驗證字符存取並探索使用者身分以進行組織查詢 |
| 成員權利管理 | 讀取 | 列出可供儲存庫探索字符存取的組織 |
將 PAT 存放在 AWS Secrets Manager
開啟 AWS Secrets Manager 主控台。
選擇存放新的機密。
針對機密類型,選擇其他類型的機密。
根據您的提供者和託管類型新增鍵/值對:
雲端託管提供者 — 使用
tokenPAT 新增名為 的金鑰做為 值。對於具有特定組織的 Azure DevOps,也請使用您的組織名稱新增名為
organization的金鑰。對於 Bitbucket 應用程式密碼 (ATBB),也請使用您的 Bitbucket 使用者名稱新增名為
username的金鑰。對於 Bitbucket 帳戶 API 字符 (ATAT),請使用您的 Bitbucket 電子郵件地址新增名為email的金鑰。
自我託管和自訂 DNS/URL 提供者 — 新增下列金鑰:
host(您的伺服器 URL,例如https://github.mycompany.com)gitlab、provider_type(github、bitbucket、 或ado) 和token(您的 PAT)。對於具有特定組織的 Azure DevOps,也請使用您的組織名稱新增名為
organization的金鑰。對於 Bitbucket 應用程式密碼 (ATBB),也請使用您的 Bitbucket 使用者名稱新增名為
username的金鑰。對於 Bitbucket 帳戶 API 字符 (ATAT),請使用您的 Bitbucket 電子郵件地址新增名為email的金鑰。
下列範例顯示秘密如何 AWS Secrets Manager 尋找 GitHub 雲端託管提供者:
{ "token": "your-github-personal-access-token" }下列範例顯示 Bitbucket 應用程式密碼 (ATBB):
{ "token": "your-bitbucket-app-password", "username": "my-bitbucket-username" }下列範例顯示自我託管的 GitLab 執行個體:
{ "host": "https://gitlab.mycompany.com", "provider_type": "gitlab", "token": "your-gitlab-personal-access-token" }選擇下一步。
輸入秘密名稱,例如
github-pat-myproject。(選用) 選取要加密的客戶受管 KMS 金鑰。
完成精靈,然後選擇儲存。
複製秘密 ARN。設定 AWS 轉換任務時,您需要此值。
如果您使用客戶受管 KMS 金鑰來加密秘密 (而非預設受管金鑰),則必須更新 KMS AWS金鑰政策,以允許 AWS Transform 解密秘密。將下列陳述式新增至客戶管理的 KMS 金鑰政策:
{ "Sid": "Allow AWS Transform to decrypt secrets", "Effect": "Allow", "Principal": { "Service": "transform.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.REGION.amazonaws.com", "kms:EncryptionContext:SecretARN": "YOUR-SECRET-ARN" } } }
將 REGION 取代為您的 AWS 區域 (例如 us-east-1),並將 YOUR-SECRET-ARN 取代為您秘密的 ARN。kms:ViaService 條件可確保 KMS 金鑰只能透過 AWS Secrets Manager 服務使用。kms:EncryptionContext:SecretARN 條件會將解密限制為您的特定秘密。
若要更新您的 KMS 金鑰政策:
在 開啟 AWS KMS 主控台
https://console.aws.amazon.com/kms。在導覽窗格中,選擇 Customer managed keys (客戶受管金鑰)。
選取您的 KMS 金鑰。
在金鑰政策標籤中,選擇編輯。
將政策陳述式新增至現有政策。
選擇儲存變更。
注意
如果您使用預設受管金鑰 AWS(aws/secretsmanager),則不需要修改任何 KMS 金鑰政策。
設定 AWS 轉換任務
在 AWS 轉換任務中,導覽至連線至資源。
選擇 Connect 原始程式碼儲存庫。
選取 PAT Connector 做為身分驗證方法。
輸入步驟 2 中的秘密 ARN。
(選用) 如果您使用客戶管理的 KMS 金鑰,請輸入 KMS 金鑰 ARN。
選取您的儲存庫和分支。
選擇繼續。
AWS 轉換會自動建立具有存取秘密所需許可的 IAM 角色。
權杖輪換和維護
您有責任在 PAT 權杖過期之前輪換它們。若要輪換權杖:
在您的原始碼提供者中產生具有相同許可的新 PAT。
更新 中的秘密值 AWS Secrets Manager。
確認您的 AWS 轉換任務可以使用新的字符存取儲存庫。
撤銷原始碼提供者中的舊 PAT。
故障診斷 PAT 連接器問題
- 拒絕存取 — 無效的 PAT
-
確認 PAT 尚未過期。確認 PAT 具有您的提供者所需的範圍。檢查 PAT 是否正確存放在其中 AWS Secrets Manager。
- 無法擷取秘密
-
驗證秘密 ARN 是否正確。檢查任務日誌以確認 AWS Transform 已建立 IAM 角色。如果您使用客戶管理的 KMS 金鑰,請驗證金鑰政策。
- 許可不足
-
PAT 可能缺少操作所需的範圍。使用所需的範圍重新產生 PAT,並在其中更新秘密值 AWS Secrets Manager。
設定 AWS CodeConnections
AWS CodeConnections 使用受管提供者整合,透過 OAuth 2.0 授權流程自動擷取臨時 OAuth 登入資料。許可是在提供者應用程式中設定,並完全由 管理 AWS。您授權應用程式一次,並 AWS 處理所有登入資料管理。
在您的 SQL Server 現代化任務中,導覽至連線至 資源。
選擇 Connect 原始碼儲存庫。
如果您沒有現有的連線,請選擇建立連線。
選取您的儲存庫提供者:
GitHub / GitHub Enterprise
GitLab.com
Bitbucket Cloud
Azure 儲存庫
遵循供應商的授權流程。
授權後,選擇連線。
選取您的儲存庫和分支
從清單中選取您的儲存庫。
選擇您要轉換的分支 (通常是主要分支、主要分支或開發分支)。
(選用) 如果您的 .NET 應用程式不在儲存庫根目錄中,請指定子目錄。
選擇繼續。
注意
AWS 轉換會為轉換的程式碼建立新的分支。您可以透過一般程式碼檢閱程序來檢閱和合併變更。
儲存庫存取核准
對於 GitHub 和其他一些平台,儲存庫管理員必須核准連線請求:
AWS 轉換會顯示驗證連結。
與您的儲存庫管理員共用此連結。
管理員會在其儲存庫設定中檢閱和核准請求。
管理員核准請求後,連線狀態會變更為已核准。
重要
核准程序可能需要一些時間,視您組織的政策而定。請妥善規劃。
步驟 4:建立部署連接器 (選用)
如果您想要將轉換的應用程式部署到 AWS 您的帳戶,您可以選擇部署連接器。
設定部署連接器
如果您想要部署應用程式,請選取是。選取否會略過此步驟。
新增您要部署轉換應用程式 AWS 的帳戶。
新增可協助您輕鬆記住連接器的名稱
提交連接器請求以進行核准。
部署連接器核准
AWS 您的帳戶管理員必須核准部署連接器的連線請求。
AWS 轉換會顯示驗證連結
與您的 AWS 帳戶管理員共用此連結
管理員在其儲存庫設定中檢閱並核准請求
核准後,連線狀態會變更為已核准
重要
核准程序可能需要一些時間,視您組織的政策而定。請妥善規劃。
步驟 5:確認您的資源
連線至資料庫和儲存庫後, AWS Transform 會驗證所有必要的資源是否可存取並準備好進行轉換。
AWS 轉換驗證的內容
資料庫連線:連線作用中、使用者具有必要的許可、可存取資料庫、支援版本
儲存庫存取:可存取儲存庫、分支存在、偵測到 .NET 專案檔案、可探索資料庫連線
環境準備:VPC 組態支援 DMS、存在必要的 AWS 服務角色、已建立網路連線、已確認區域相容性
檢閱飛行前檢查清單
導覽至在任務計畫中確認您的資源
檢閱檢查清單項目:
✅ 資料庫連線已驗證
✅ 儲存庫存取已確認
✅ 支援的 .NET 版本
✅ 偵測到實體架構或 ADO.NET
✅ 網路組態有效
✅ 授予的必要許可
如果所有項目都顯示為完成,請選擇繼續
如果有任何項目顯示警告或錯誤,請在繼續之前解決它們
步驟 6:探索和評估
AWS Transform 會分析 SQL Server 資料庫和 .NET 應用程式,以了解現代化的範圍和複雜性。
探索的內容
資料庫物件:資料表、檢視、索引、預存程序、函數、觸發條件、限制條件、資料類型、運算欄、身分欄、外部索引鍵關係
應用程式碼:.NET 專案結構、實體架構模型和組態、ADO.NET 資料存取碼、資料庫連線字串、預存程序呼叫、程式碼中的 SQL 查詢
相依性:哪些應用程式使用哪些資料庫、跨資料庫相依性、共用預存程序、常見的資料存取模式
探索程序
AWS 轉換會在資源確認後自動開始探索
探索通常需要 5-15 分鐘,取決於資料庫大小和應用程式的複雜性
監控工作日誌中的進度
AWS 轉換會在發現物件時顯示即時更新
檢閱探索結果
探索完成後,導覽至探索和評估以檢閱:
資料庫分析:
物件計數:資料表、檢視、預存程序、函數、觸發器的數量
複雜性分數:評估轉換複雜性 (低、中、高)
動作項目:可能需要人工注意的物件
支援的功能:會自動轉換的資料庫功能
不支援的功能:需要解決方法的功能
應用程式分析:
專案類型:ASP.NET Core、主控台應用程式、類別程式庫等。
.NET 版本:偵測到的 .NET Core 版本
資料存取架構:實體架構版本或 https://ADO.NET
資料庫連線:找到的連線字串數目
程式碼複雜性:評估轉換複雜性
相依性映射:
application-to-database關係的視覺化呈現
跨資料庫相依性
共用元件
了解複雜性評估
AWS 轉換會將現代化分為三個類別:
| 複雜性 | 特性 | 預期結果 |
|---|---|---|
| 低 (類別 A) | 標準 SQL 模式 (ANSI SQL)、簡易預存程序、基本資料類型、具有標準組態的實體架構 | 預期人力介入最少,自動化成功率高 |
| 中 (B 類) | 進階 T-SQL 模式、具有商業邏輯的複雜預存程序、使用者定義的函數、運算資料欄 | 需要一些人工介入,建議專家審查 |
| 高 (C 類) | CLR 組件、連結的伺服器、Service Broker、複雜的全文搜尋 | 需要大量人工重構,考慮分階段方法 |
評估報告
AWS 轉換會產生詳細的評估報告,其中包括:
具有高階概觀的執行摘要
完成資料庫清查
應用程式庫存
轉換準備度百分比
嘗試估算
風險評估和緩解策略
建議方法
您可以下載評估報告,以便離線檢閱並與利益相關者共用。
步驟 7:產生和檢閱波動計畫
對於具有多個資料庫和應用程式的大型資產, AWS Transform 會產生波動計畫,在邏輯群組中序列化現代化。
什麼是波動計畫?
波動計畫會根據下列項目將您的現代化組織成階段 (波動):
資料庫和應用程式之間的相依性
業務優先順序
風險承受能力
資源可用性
技術複雜性
每個波動都包含一組資料庫和應用程式,這些資料庫和應用程式可以一起現代化,而不會中斷相依性。
檢閱波動計畫
導覽至任務計畫中的 Wave 規劃
檢閱提議的波紋
對於每個波動,請檢閱:
包含的資料庫
包含的應用程式
其他波的相依性
預估轉換時間
複雜性層級
可部署的應用程式
自訂波動計畫
您可以透過 2 種方式自訂波動計畫,以符合您的業務需求:
使用 JSON:
選擇下載所有波,以取得具有所有波的 JSON 檔案
透過下列方式在 JSON 中修改波浪:
在波浪之間移動資料庫
將波分成較小的群組
將波浪合併在一起
變更波動序列
從範圍新增或移除資料庫
選擇上傳波動計畫,將 JSON 檔案上傳回主控台
AWS 轉換會驗證您的變更,並在違反相依性時發出警告
選擇確認波浪以更新波浪計劃
使用聊天:
您可以與客服人員聊天,並要求其將儲存庫和資料庫移至特定波,以修改波計畫。如果您需要對波浪進行次要編輯,則此方法可正常運作。
重要
自訂波紋時,請確保遵守相依性。在資料庫可能導致問題之前轉換相依的應用程式。
單一資料庫現代化
如果您要現代化單一資料庫和應用程式, AWS Transform 會以一波波建立簡單的計劃。您可以直接進行轉換,無需波浪規劃。
核准波動計畫
在檢閱和自訂 (如有需要) 之後,選擇核准波動計畫
AWS 轉換會鎖定波動計畫並繼續轉換
您稍後仍可選擇編輯波動計畫來修改計畫
步驟 8:結構描述轉換
AWS 轉換會將您的 SQL Server 資料庫結構描述轉換為 Aurora PostgreSQL,包括資料表、檢視、預存程序、函數和觸發。
結構描述轉換的運作方式
AWS 轉換使用透過生成式 AI 增強的 AWS DMS 結構描述轉換來:
分析 SQL Server 結構描述和關係
將資料類型從 SQL Server 映射至 PostgreSQL 對等項目
將 T-SQL 轉換為 PL/pgSQL
處理身分資料欄、運算的資料欄和限制條件
驗證轉換和參考完整性
為需要人工檢閱的物件產生動作項目
支援的轉換
自動轉換:
資料表、檢視和索引
主索引鍵和外部索引鍵
檢查限制條件和預設值
最常見的資料類型
簡單預存程序
基本函數和觸發條件
身分資料欄 (轉換為 SERIAL 或 GENERATED)
大多數運算的資料欄
可能需要人工審核:
使用進階 T-SQL 的複雜預存程序
SQL Server 特定函數 (GETUTCDATE、SUSER_SNAME 等)
具有複雜表達式的運算資料欄
全文搜尋索引
XML 資料類型操作
HIERARCHYID 資料類型 (需要 ltree 延伸)
未自動轉換:
CLR 組件
連結伺服器
Service Broker
SQL Server 代理程式任務
開始結構描述轉換
導覽至任務計畫中的結構描述轉換
檢閱轉換設定:
目標 PostgreSQL 版本
延伸選項 (ltree、PostGIS 等)
命名慣例
選擇開始轉換
監控工作日誌中的進度
轉換通常需要 10-30 分鐘,取決於資料庫物件的數量
檢閱轉換結果
轉換完成後,導覽至檢閱結構描述轉換:
轉換摘要:
轉換的物件:成功轉換的物件計數
動作項目:需要人為注意的物件
警告:要檢閱的潛在問題
錯誤:無法轉換的物件
依物件類型檢閱:
資料表:資料類型映射、限制條件、索引
預存程序:T-SQL 轉換為 PL/pgSQL
函數:函數簽章和邏輯變更
觸發:觸發語法和時間變更
檢閱動作項目
選擇檢視動作項目
針對每個動作項目,檢閱:
物件名稱:資料庫物件
問題類型:什麼需要注意
嚴重性:關鍵、警告或資訊
建議:建議的解析度
原始程式碼:SQL Server 版本
轉換後的程式碼:PostgreSQL 版本
對於每個動作項目,您可以:
接受:使用轉換後的程式碼
修改:編輯轉換後的程式碼
稍後標記:標記以在轉換後進行人工檢閱
範例:預存程序轉換
SQL Server T-SQL:
CREATE PROCEDURE GetProductsByCategory @CategoryId INT, @PageSize INT = 10 AS BEGIN SET NOCOUNT ON; SELECT TOP (@PageSize) ProductId, Name, Price, DATEDIFF(DAY, CreatedDate, GETUTCDATE()) AS DaysOld FROM Products WHERE CategoryId = @CategoryId ORDER BY Name END
轉換後的 PostgreSQL PL/pgSQL:
CREATE OR REPLACE FUNCTION get_products_by_category( p_category_id INTEGER, p_page_size INTEGER DEFAULT 10 ) RETURNS TABLE ( product_id INTEGER, name VARCHAR(255), price NUMERIC(18,2), days_old INTEGER ) AS $$ BEGIN RETURN QUERY SELECT p.product_id, p.name, p.price, EXTRACT(DAY FROM (NOW() - p.created_date))::INTEGER AS days_old FROM products p WHERE p.category_id = p_category_id ORDER BY p.name LIMIT p_page_size; END; $$ LANGUAGE plpgsql;
所做的變更:
程序轉換為函數傳回 TABLE
字首為 p_ 的參數名稱
TOP 轉換為 LIMIT
DATEDIFF 轉換為 EXTRACT
GETUTCDATE() 轉換為 NOW()
資料欄名稱轉換為小寫 (PostgreSQL 慣例)
核准結構描述轉換
檢閱所有動作項目並進行必要的修改之後
選擇核准結構描述轉換
AWS Transform 準備轉換後的結構描述以部署到 Aurora PostgreSQL
注意
您可以將轉換後的結構描述下載為 SQL 指令碼,以進行離線檢閱或版本控制。
步驟 9:資料遷移 (選用)
AWS 轉換提供將資料從 SQL Server 遷移至 Aurora PostgreSQL 的選項。資料遷移是選用的,如果您只需要結構描述和程式碼轉換,則可以略過。
資料遷移選項
選項 1:生產資料遷移
使用 DMS AWS 遷移實際生產資料:
所有資料的完整初始載入
測試期間持續複寫 (CDC)
最短的停機時間切換
資料驗證和完整性檢查
選項 2:略過資料遷移
僅轉換結構描述和程式碼:
適用於開發/測試環境
分別遷移資料的時間
對於proof-of-concept專案
設定資料遷移
導覽至任務計畫中的資料遷移
選擇您的遷移選項:
遷移生產資料
略過資料遷移
若要遷移生產資料,請設定:
遷移類型:完全載入或完全載入 + CDC
驗證:啟用資料驗證
效能:DMS 執行個體大小
-
選擇 >開始遷移
生產資料遷移程序
如果您選擇遷移生產資料:
初始同步: AWS DMS 會執行所有資料表的完整載入
持續複寫:(如果啟用 CDC) 保持資料同步
驗證:驗證資料列計數和資料完整性
切換準備:準備最終同步
遷移時間軸:
小型資料庫 (< 10 GB):30 分鐘 - 2 小時
中型資料庫 (10-100 GB):2-8 小時
大型資料庫 (> 100 GB):8 小時以上
資料驗證
AWS 轉換會使用下列檢查來驗證遷移的資料:
資料列計數比較 (來源與目標)
主索引鍵完整性
外部金鑰關係
資料類型相容性
運算的資料欄結果
Null 值處理
步驟 10:應用程式程式碼轉換
AWS 轉換會將您的 .NET 應用程式程式碼轉換為使用 Aurora PostgreSQL 而非 SQL Server。它會要求儲存庫中的目標分支名稱遞交轉換後的原始程式碼。輸入分支名稱後, AWS Transform 將建立新的分支,並啟動轉換以符合 PostgreSQL 資料庫。
要轉換的內容
實體架構變更:
資料庫提供者:UseSqlServer() → UseNpgsql()
連線字串:SQL Server 格式 → PostgreSQL 格式
資料類型映射:SQL Server 類型 → PostgreSQL 類型
DbContext 組態:SQL Server 特定 → PostgreSQL 特定
遷移檔案:針對 PostgreSQL 相容性更新
ADO.NET 變更:
連線類別:SqlConnection → NpgsqlConnection
命令類別:SqlCommand → NpgsqlCommand
資料讀取器:SqlDataReader → NpgsqlDataReader
參數:SqlParameter → NpgsqlParameter
SQL 語法:T-SQL → PostgreSQL SQL
組態變更:
appsettings.json 中的連線字串
資料庫提供者 NuGet 套件
相依性注入組態
啟動/Program.cs 組態
開始程式碼轉換
導覽至任務計畫中的應用程式轉換
檢閱轉換設定:
目標 .NET 版本 (如果升級)
PostgreSQL 提供者版本
程式碼樣式偏好設定
選擇開始轉換
監控工作日誌中的進度
根據程式碼庫大小,轉換通常需要 15-45 分鐘
步驟 11:檢閱轉換結果
在繼續部署之前,請檢閱完整的轉換結果,以確保一切已準備好進行測試。
您可以從儲存庫分支下載轉換後的程式碼,用於:
本機測試和驗證
IDE 中的程式碼檢閱
與您的 CI/CD 管道整合
版本控制遞交
您也可以下載轉換摘要,以檢閱 AWS Transform 在轉換過程中所做的自然語言變更。
轉換摘要
導覽至任務計畫中的轉換摘要
檢閱整體結果:
結構描述轉換:轉換的物件、動作項目、警告
資料遷移:遷移的資料表、傳輸的資料列、驗證狀態
程式碼轉換:檔案已變更、行已修改、問題已解決
準備程度分數:部署的整體準備程度
產生轉換報告
AWS 轉換會產生全面的轉換報告:
選擇產生報告
選取報告類型:
執行摘要:利益相關者的高階概觀
技術詳細資訊:完成轉換文件
動作項目:所需的人力任務清單
選擇下載報告
報告包括:
轉換範圍和目標
物件和程式碼已轉換
遇到的問題和解決方法
驗證結果
部署準備度評估
測試建議
步驟 12:驗證和測試
在部署到生產環境之前,請驗證轉換的應用程式是否與 Aurora PostgreSQL 正常運作。
驗證類型
自動化驗證: AWS Transform 會執行自動化檢查:
針對來源資料庫的結構描述驗證
資料完整性驗證
查詢對等測試
連線字串驗證
組態驗證
人工驗證:您應該執行其他測試:
應用程式功能的功能測試
與其他系統的整合測試
效能測試和基準測試
使用者接受度測試
安全性測試
執行自動驗證
導覽至任務計畫中的驗證
選擇執行驗證
AWS 轉換會執行驗證測試:
資料庫連線
結構描述相容性
資料完整性
應用程式建置
基本功能
檢閱驗證結果:
通過:成功測試
失敗:需要注意的測試
警告:要檢閱的潛在問題
測試檢查清單
資料庫功能:
可存取的所有資料表
存放程序正確執行
函數傳回預期的結果
適當地觸發觸發
限制條件已正確強制執行
索引可改善查詢效能
應用程式功能:
應用程式已成功啟動
已建立資料庫連線
CRUD 操作可正常運作
儲存的程序呼叫成功
交易正確遞交/轉返
錯誤處理如預期般運作
資料完整性:
資料列計數比對來源
主索引鍵是唯一的
外部金鑰有效
運算的資料欄正確
適當處理空值
相容資料類型
效能:
可接受的查詢回應時間
連線集區已設定
索引最佳化
沒有 N+1 查詢問題
批次操作效率
資源使用率合理
步驟 13:部署
驗證成功後,將您的現代化應用程式和資料庫部署到生產環境。
部署選項
Amazon ECS 和 Amazon EC2 Linux
部署前檢查清單
在部署到生產環境之前:
通過的所有驗證測試
已完成效能測試
安全性檢閱已完成
備份和復原計劃已記錄
已設定監控和提醒
在新環境中訓練的團隊
利益相關者收到部署通知
排定的維護時段
部署至 Amazon ECS
導覽至任務計畫中的部署
選擇部署到 ECS
設定部署設定:
叢集:選取或建立 ECS 叢集
服務:設定 ECS 服務
任務定義:檢閱產生的任務定義
負載平衡器:設定 ALB/NLB
自動擴展:設定擴展政策
檢閱infrastructure-as-code(CloudFormation 範本或 AWS CDK 程式碼)
選擇部署
監控部署
AWS 轉換會部署您的應用程式:
建立 Aurora PostgreSQL 叢集
套用資料庫結構描述
載入資料 (如適用)
部署應用程式容器
設定負載平衡器
設定自動擴展
監控部署進度並驗證:
基礎設施佈建
資料庫初始化
應用程式部署
通過運作狀態檢查
應用程式可存取
資料庫連線運作中
顯示正常操作的日誌
部署後驗證
部署之後:
煙霧測試:
驗證關鍵功能
測試金鑰使用者工作流程
檢查整合點
監控錯誤率
效能監控:
追蹤回應時間
監控資料庫查詢
檢查資源使用率
檢閱應用程式日誌
使用者驗證:
執行使用者接受度測試
收集意見回饋
解決任何問題
記錄學到的經驗教訓
轉返程序
如果在部署之後發生問題:
立即轉返:
還原至先前的應用程式版本
切換回 SQL Server (如果仍然可用)
視需要從備份還原
部分轉返:
復原特定元件
保留資料庫變更
僅還原應用程式程式碼
轉送修正:
將 Hotfix 套用至 Aurora PostgreSQL 版本
部署更新的應用程式程式碼
監控解析度
重要
在切換後保持 SQL Server 資料庫可用一段時間,以在需要時啟用轉返。
部署後最佳化
成功部署後:
效能調校:
最佳化慢查詢
調整連線集區設定
微調 Aurora PostgreSQL 參數
檢閱和最佳化索引
成本最佳化:
適當大小的 Aurora 執行個體
適當地設定自動調整規模
檢閱儲存設定
最佳化備份保留
監控設定:
設定 CloudWatch 儀表板
設定提醒
Enable Enhanced Monitoring (啟用增強型監控)
設定績效詳情
文件:
更新執行手冊
文件架構變更
訓練營運團隊
建立故障診斷指南