Kịch bản
Đồng bộ hóa dữ liệu từ một SQL Server on-premises lên Azure SQL Database (hoặc ngược lại) theo lịch trình, xử lý các thay đổi schema và tải dữ liệu tăng dần (incremental load).
Yêu cầu trước
- Azure subscription với Data Factory đã được tạo.
- Self‑hosted Integration Runtime (IR) được cài đặt trên máy on-premise (tải từ cổng ADF).
- Kết nối mạng (VPN hoặc ExpressRoute) để IR có thể truy cập DB on-premise.
- Service principal với quyền Contributor trên Data Factory.
Các bước thực hiện
- Tạo Linked Services
- Azure SQL:
Server=tcp:<azure_sql>.database.windows.net,1433;Database=<db>;Authentication=SQLPassword;User ID=<user>;Password=<pwd> - On‑Prem SQL: Sử dụng Self‑hosted IR và định dạng chuỗi kết nối tương tự.
- Azure SQL:
- Tạo Datasets
SourceDataset→type: SqlServerTable,tableName: dbo.SourceTable.SinkDataset→type: AzureSqlTable,tableName: dbo.DestinationTable.
- Xây dựng Pipeline (Đường ống)
- Copy Activity
- Source:
SourceDataset - Sink:
SinkDataset - Mapping: Tự động ánh xạ cột hoặc cung cấp mapping JSON tĩnh.
- Source:
- Incremental Load (khuyên dùng):
Sử dụng biến Watermark lưu trữ trong Azure Key Vault hoặc tham số pipeline.json"source": { "type": "SqlSource", "sqlReaderQuery": "SELECT * FROM dbo.SourceTable WHERE ModifiedDate > @lastWatermark" }, "sink": { "type": "SqlSink" }, "translator": { "type": "TabularTranslator" }
- Copy Activity
- Schedule Trigger (Lập lịch)
- Tạo Time Trigger (ví dụ: mỗi 15 phút) truyền giá trị watermark hiện tại.
- Giám sát & Cảnh báo
- Kích hoạt ADF monitoring → thiết lập Azure Monitor alerts khi có lỗi activity.
- (Tùy chọn) Gửi log vào Log Analytics workspace.
Tích hợp với .NET
csharp// Kích hoạt pipeline từ .NET (ví dụ: sau một sự kiện nghiệp vụ)
var client = new DataFactoryManagementClient(new DefaultAzureCredential())
{
SubscriptionId = "<subscription-id>"
};
await client.Pipelines.CreateRunAsync(
resourceGroupName: "rg-datafactory",
factoryName: "myADF",
pipelineName: "SyncOnPremToAzure",
parameters: new Dictionary<string, object> { { "runId", Guid.NewGuid().ToString() } }
);
Kết quả: Dịch vụ .NET của bạn có thể gọi và bỏ qua (fire-and-forget) tác vụ đồng bộ, trong khi ADF đảm nhiệm phần việc nặng nhọc.
Mẹo thực hành tốt
- Sử dụng PolyBase cho bulk copy khi di chuyển > 100 triệu dòng.
- Kích hoạt Azure Data Factory Managed VNet cho traffic inbound an toàn.
- Quản lý phiên bản JSON của pipeline thông qua tích hợp Git trong giao diện ADF.
- Kiểm thử với phần dữ liệu nhỏ trước khi mở rộng tải toàn bộ.
File thuộc mục Azure Playbooks của senior‑dotnet‑wiki.