Only this pageAll pages
Powered by GitBook
1 of 33

DP-300 (Administering Relational Databases on Microsoft Azure)

Loading...

Loading...

Loading...

Loading...

dp-300

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Xin chào

Drawing

Liên hệ

Mọi thông tin cần liên lạc, vui lòng gởi đến email [email protected].

Tại Việt Nam?

Vui lòng ghi tiêu đề của email có chứa chữ "Viet Nam", email sẽ tự động gởi đến nhóm hỗ trợ tại Việt Nam (tiếng Việt).

Topic 1

Solution

Hướng dẫn khôi phục SSISDB sau khi mất master database trong SQL Server 2019 trên Azure VM

Khi cơ sở dữ liệu master bị mất, SSISDB (SQL Server Integration Services Catalog) sẽ không thể hoạt động do nó phụ thuộc vào Service Master Key (SMK) để mã hóa dữ liệu nhạy cảm. Để khôi phục SSISDB và chạy lại các gói SSIS, bạn cần thực hiện bốn bước quan trọng theo thứ tự sau:


Thứ tự đúng của các bước khôi phục

1️⃣ Gắn lại (Attach) cơ sở dữ liệu SSISDB

  • Khi master database bị mất, SSISDB không còn khả dụng trong SQL Server.

  • Bạn cần gắn lại (attach) cơ sở dữ liệu SSISDB bằng lệnh T-SQL hoặc thông qua SQL Server Management Studio (SSMS).

2️⃣ Mở khóa Master Key của SSISDB

  • SSISDB lưu trữ dữ liệu nhạy cảm đã được mã hóa bằng Database Master Key (DMK).

  • Bạn phải mở khóa DMK bằng mật khẩu được thiết lập khi cài đặt SSISDB:

    OPEN MASTER KEY DECRYPTION BY PASSWORD = 'YourStrongPassword'

3️⃣ Mã hóa lại Master Key bằng Service Master Key

  • Do Master Database bị mất, Service Master Key (SMK) cũng bị mất.

  • Bạn cần mã hóa lại DMK bằng SMK mới để SSISDB có thể hoạt động bình thường trong SQL Server:

    ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;
  • Bước này giúp bảo đảm rằng SSISDB có thể sử dụng khóa mã hóa mới để hoạt động bình thường.

4️⃣ Bật thuộc tính TRUSTWORTHY và kích hoạt CLR

  • SSISDB yêu cầu bật CLR (Common Language Runtime) để thực hiện các tác vụ nội bộ.

  • Trường TRUSTWORTHY phải được đặt thành ON để SSISDB hoạt động đúng cách:

    ALTER DATABASE SSISDB SET TRUSTWORTHY ON;
    EXEC sp_configure 'clr enabled', 1;
    RECONFIGURE;

Thứ tự đúng của các bước thực hiện

Bước

Hành động

1

Gắn lại cơ sở dữ liệu SSISDB (Attach the SSISDB database)

2

Mở khóa Master Key cho SSISDB (Open the master key for the SSISDB database)

3

Mã hóa lại Master Key bằng Service Master Key (Encrypt a copy of the master key by using the service master key)

4

Bật TRUSTWORTHY và CLR (Turn on the TRUSTWORTHY property and the CLR property)


Tại sao không chọn các phương án khác?

  • ❌ Thêm chứng chỉ vào Azure Key Vault (Add a certificate to an Azure key vault) → Không cần thiết trong tình huống này vì SSISDB không phụ thuộc vào Key Vault.

  • ❌ Bật Transparent Data Encryption (TDE) (Enable Transparent Data Encryption - TDE) → SSISDB không yêu cầu TDE để hoạt động.


Kết luận

✔ Thực hiện các bước trên theo đúng thứ tự sẽ giúp bạn khôi phục SSISDB thành công và cho phép chạy lại các gói SSIS trên SQL Server 2019 trong Azure VM. ✔ Bảo đảm rằng bạn có sao lưu định kỳ cho master database để tránh mất dữ liệu trong tương lai.

[1-10]

Solution

Câu trả lời đúng:

✅ A. Tổng kích thước của tất cả các cơ sở dữ liệu ✅ C. Số lượng cơ sở dữ liệu có đỉnh tải đồng thời * mức sử dụng CPU cao nhất của mỗi cơ sở dữ liệu ✅ E. Tổng số cơ sở dữ liệu * mức sử dụng CPU trung bình của mỗi cơ sở dữ liệu


Giải thích chi tiết về việc chọn kích thước Elastic Pool

Bạn có 20 Azure SQL databases và muốn tối ưu hóa tài nguyên bằng Azure SQL Elastic Pool. Để xác định kích thước phù hợp, bạn cần xem xét các yếu tố hiệu suất và tài nguyên sử dụng.

✅ A. Tổng kích thước của tất cả các cơ sở dữ liệu

🔹 Elastic Pool có giới hạn dung lượng lưu trữ. 🔹 Tổng kích thước của tất cả các database giúp đảm bảo Elastic Pool đủ dung lượng để chứa chúng. 🔹 Nếu tổng kích thước quá lớn, cần chọn một pool có dung lượng cao hơn hoặc chia nhỏ cơ sở dữ liệu.

✅ C. Số lượng cơ sở dữ liệu có đỉnh tải đồng thời * mức sử dụng CPU cao nhất của mỗi cơ sở dữ liệu

🔹 Trong một Elastic Pool, không phải tất cả các database đều đạt mức tải cao cùng lúc. 🔹 Bạn cần xác định có bao nhiêu database đạt mức tải cao nhất đồng thời, và mức sử dụng CPU cao nhất để đảm bảo pool có đủ tài nguyên xử lý.

✅ E. Tổng số cơ sở dữ liệu * mức sử dụng CPU trung bình của mỗi cơ sở dữ liệu

🔹 Giúp ước lượng mức tiêu thụ CPU tổng thể trong pool. 🔹 Dùng để chọn số lượng vCore hợp lý cho Elastic Pool dựa trên mức sử dụng trung bình.


❌ Lý do không chọn các phương án sai

Lựa chọn

Lý do không chọn

B. Hỗ trợ geo-replication

❌ Elastic Pool không ảnh hưởng đến geo-replication, vì replication hoạt động trên từng database riêng lẻ.

D. Số lượng phiên (session) đồng thời tối đa của tất cả các cơ sở dữ liệu

❌ Elastic Pool được tối ưu cho CPU & IOPS, không bị giới hạn bởi số lượng session như một yếu tố chính để tính toán kích thước.


Tóm tắt lựa chọn đúng

Chỉ số cần sử dụng

Lý do

A. Tổng kích thước của tất cả các database

✅ Đảm bảo pool có đủ dung lượng lưu trữ

C. Số lượng database có đỉnh tải đồng thời * mức sử dụng CPU cao nhất

✅ Xác định vCore cần thiết khi tải cao

E. Tổng số database * mức sử dụng CPU trung bình

✅ Ước lượng mức CPU tổng thể của Elastic Pool


Kết luận

✅ Dùng tổng kích thước dữ liệu, mức CPU trung bình & đỉnh để chọn Elastic Pool phù hợp. ✅ Elastic Pool giúp giảm chi phí nếu database có tải thay đổi theo thời gian. ✅ Không cần tính đến geo-replication hoặc số session đồng thời.

More ...

Vui lòng liên hệ ở mục Liên hệ

  • Chi phí rẻ hơn website cho voucher (thay vì 165 USD thì chỉ có 1 triệu VND)

  • Đề thi nhiều, hơn 400 câu; nhưng chỉ giá vài ly cafe. Bạn có sẳn sàng?

Xin cảm ơn.

Question #11

More topics ...

Vui lòng truy cập More ...

Giới thiệu

DP-300 là gì?

DP-300: Administering Relational Databases on Microsoft Azure là một chứng chỉ của Microsoft dành cho những ai muốn trở thành Azure Database Administrator (DBA). Chứng chỉ này kiểm tra khả năng quản trị, giám sát, tối ưu và bảo mật các cơ sở dữ liệu quan hệ (RDBMS) trên Microsoft Azure.


1. Đối tượng phù hợp với chứng chỉ DP-300

DP-300 dành cho: ✅ Database Administrators (DBA) muốn mở rộng kiến thức lên Azure. ✅ Data Engineers cần hiểu về quản lý dữ liệu trên Azure. ✅ IT Professionals làm việc với cơ sở dữ liệu SQL Server hoặc PostgreSQL trên nền tảng Azure. ✅ DevOps Engineers cần quản lý database trên Cloud.


2. Các chủ đề chính trong kỳ thi DP-300

Bài thi DP-300 tập trung vào các kỹ năng sau:

Chủ đề

Tỷ lệ (%) trong bài thi

Triển khai và quản lý cơ sở dữ liệu trong Azure

15 - 20%

Giám sát và tối ưu hóa hiệu suất

25 - 30%

Cấu hình bảo mật cơ sở dữ liệu

15 - 20%

Triển khai chiến lược High Availability & Disaster Recovery (HA/DR)

10 - 15%

Tự động hóa các tác vụ quản trị

10 - 15%

Lập kế hoạch và thiết kế tài nguyên cơ sở dữ liệu

10 - 15%


3. Kỹ năng chính cần có để thi DP-300

🔹 Quản lý Azure SQL Database, Azure SQL Managed Instance và SQL Server trên Azure VM 🔹 Cấu hình bảo mật, quyền truy cập và mã hóa dữ liệu 🔹 Giám sát hiệu suất bằng Azure Monitor, Query Store, Performance Insights 🔹 Tối ưu hóa truy vấn SQL (Indexing, Execution Plan, Statistics, Partitioning) 🔹 Thiết lập sao lưu (Backup) và phục hồi (Restore) dữ liệu 🔹 Cấu hình High Availability (HA) với Failover Groups, Geo-replication, Always On Availability Groups 🔹 Tự động hóa tác vụ DBA với PowerShell, Azure CLI và Automation


4. Hình thức thi DP-300

📌 Mã bài thi: DP-300 📌 Thời gian: 120 phút 📌 Số câu hỏi: ~40 - 60 câu 📌 Dạng câu hỏi:

  • Trắc nghiệm (Multiple Choice)

  • Kéo thả (Drag & Drop)

  • Mô phỏng thực tế (Case Study) 📌 Điểm đậu: 700/1000 📌 Chi phí: ~$165 USD (tùy quốc gia) Chúng tôi cung cấp voucher có 1 triệu VND à. 📌 Thi online qua Pearson VUE hoặc tại trung tâm khảo thí


5. Tại sao nên học DP-300?

✅ Cơ hội nghề nghiệp cao: Chứng chỉ giúp bạn có lợi thế khi ứng tuyển vào các vị trí Database Administrator, Data Engineer, Cloud DBA. ✅ Tăng lương & cơ hội thăng tiến: DBA trên Azure là một trong những lĩnh vực có mức lương cao. ✅ Học được kỹ năng thực tế: Không chỉ lý thuyết, DP-300 giúp bạn làm việc với SQL Server trên Azure, Azure SQL Database, Azure Managed Instance. ✅ Chứng chỉ Microsoft có giá trị quốc tế: Được công nhận bởi các công ty lớn.


6. Học DP-300 ở đâu?

📚 Tài liệu chính thức từ Microsoft Learn: 👉 Microsoft Learn - DP-300

📚 Khóa học online trên Udemy, Pluralsight, Coursera 📚 Học thực hành với Azure Free Tier (12 tháng miễn phí) 📚 Luyện thi với practice test trên VardyTests.com

[11-20]

Question #1

You have 20 Azure SQL databases provisioned by using the vCore purchasing model. You plan to create an Azure SQL Database elastic pool and add the 20 databases. Which three metrics should you use to size the elastic pool to meet the demands of your workload? Each correct answer presents part of the solution. NOTE: Each correct selection is worth one point. A. total size of all the databases Most Voted B. geo-replication support C. number of concurrently peaking databases * peak CPU utilization per database Most Voted D. maximum number of concurrent sessions for all the databases E. total number of databases * average CPU utilization per database

Solution

Cấu hình Backup để di chuyển CSDL SQL Server 2016 lên Azure SQL Managed Instance bằng Azure Database Migration Service (DMS)

Dựa trên yêu cầu di chuyển trực tuyến (online migration), các lựa chọn chính xác là:


1. Loại Backup cần chọn

✅ "Full and log backups only"

Vì sao?

  • Azure DMS yêu cầu backup đầy đủ (Full Backup) trước tiên, sau đó tiếp tục áp dụng Transaction Log Backup để đồng bộ hóa dữ liệu liên tục giữa SQL Server và Azure SQL Managed Instance.

  • Không cần dùng Differential Backup trong quá trình di chuyển online.

  • Chỉ Full và Log Backup giúp quá trình migration diễn ra liên tục, đảm bảo ít downtime nhất.


2. Tùy chọn Backup cần chọn

✅ "WITH NOINIT"

Vì sao?

  • WITH NOINIT đảm bảo bản backup mới sẽ được thêm vào tập tin backup cũ thay vì ghi đè lên.

  • Điều này quan trọng khi thực hiện nhiều lần backup (Full + Log) trong quá trình di chuyển online, giúp Azure DMS có thể đọc toàn bộ chuỗi backup một cách liên tục.

Các lựa chọn khác và lý do không chọn

Tùy chọn Backup

Lý do không chọn

WITH CHECKSUM

Kiểm tra tính toàn vẹn của backup, nhưng không ảnh hưởng đến quá trình migration.

WITH UNLOAD

Dùng cho backup lên băng từ (Tape), không áp dụng cho Azure Blob Storage.


3. Câu trả lời đúng

Trường

Lựa chọn đúng

Backup type

Full and log backups only

Backup option

WITH NOINIT CHECKSUM (Xem lại)

🔹 Cấu hình này giúp quá trình di chuyển online diễn ra suôn sẻ với ít downtime nhất. 🔹 Azure DMS sẽ sử dụng Full Backup và liên tục áp dụng Transaction Log Backup để đồng bộ dữ liệu.

Solution

Đáp án đúng: A. Azure Event Hubs Standard


Giải thích chi tiết

Bạn cần một dịch vụ có thể thay đổi số lượng partition sau khi tạo để xử lý luồng dữ liệu có khối lượng biến đổi.

✅ Azure Event Hubs Standard hỗ trợ tăng số lượng partition sau khi tạo, nhưng không thể giảm.


Phân tích từng lựa chọn

Dịch vụ

Hỗ trợ thay đổi partition count sau khi tạo?

Lý do chọn hoặc không chọn

A. Azure Event Hubs Standard ✅

Có (Chỉ tăng, không giảm)

🔹 Thích hợp cho ingestion dữ liệu streaming🔹 Hỗ trợ thay đổi số partition sau khi tạo

B. Azure Stream Analytics ❌

Không

🔹 Chỉ dùng để xử lý dữ liệu streaming, không phải để ingestion. 🔹 Không quản lý partition count

C. Azure Data Factory ❌

Không

🔹 Dành cho batch processing, không phải streaming

D. Azure Event Hubs Dedicated ❌

Không

🔹 Partition count cố định và không thể thay đổi


Tại sao chọn Azure Event Hubs Standard?

1️⃣ Hỗ trợ ingestion dữ liệu streaming tốc độ cao từ IoT, logs, clickstream, telemetry. 2️⃣ Có thể tăng số lượng partitions sau khi tạo để mở rộng khả năng xử lý dữ liệu. 3️⃣ Tích hợp tốt với Azure Stream Analytics, Databricks, Apache Spark, và Azure Functions.


Lưu ý quan trọng về partition trong Event Hubs

🔹 Partition giúp chia nhỏ dữ liệu để xử lý song song. 🔹 Bạn có thể tăng số lượng partition sau khi tạo, nhưng không thể giảm. 🔹 Partition count ảnh hưởng đến hiệu suất và chi phí.


Kết luận

✅ Sử dụng Azure Event Hubs Standard để đảm bảo khả năng thay đổi partition count sau khi tạo, giúp hệ thống linh hoạt hơn khi khối lượng dữ liệu thay đổi.

Bạn có muốn hướng dẫn chi tiết cách triển khai Azure Event Hubs Standard không? 🚀

More questions ...

Vui lòng truy cập More ...

Di chuyển SQL Server lên Azure SQL Managed Instance

Hướng dẫn chi tiết từng bước thiết lập Azure Database Migration Service (DMS) để di chuyển SQL Server lên Azure SQL Managed Instance

I. Chuẩn bị trước khi di chuyển

Trước khi sử dụng Azure Database Migration Service (DMS), bạn cần thực hiện một số bước chuẩn bị trên SQL Server On-Premises và Azure SQL Managed Instance.

Bước 1: Kiểm tra điều kiện hệ thống

🔹 Yêu cầu hệ thống:

  • Nguồn (On-Premises): SQL Server 2019 (hoặc các phiên bản cũ hơn được hỗ trợ).

  • Đích (Azure SQL Managed Instance): Đã được tạo trên Azure.

  • Kết nối mạng: Phải có kết nối giữa SQL Server On-Premises và Azure SQL Managed Instance.

🔹 Kiểm tra các tính năng không hỗ trợ trên Azure SQL Managed Instance:

  • Chạy lệnh sau trên SQL Server để kiểm tra các tính năng không hỗ trợ:

SELECT * FROM sys.dm_db_feature_usage;
  • Nếu có các tính năng không tương thích (VD: Database Mail, Linked Server, Filestream), cần loại bỏ hoặc thay thế.

🔹 Kiểm tra dung lượng ổ cứng, RAM: Vì CSDL có kích thước 4TB, cần đảm bảo đủ tài nguyên để thực hiện migration mà không ảnh hưởng hiệu suất.


Bước 2: Mở cổng kết nối và cấu hình SQL Server

Azure DMS cần kết nối tới SQL Server On-Premises để sao chép dữ liệu.

✅ Bật chế độ TCP/IP trong SQL Server:

  1. Mở SQL Server Configuration Manager.

  2. Chọn SQL Server Network Configuration > Protocols for <Instance_Name>.

  3. Bật TCP/IP và khởi động lại SQL Server.

✅ Mở Firewall cho SQL Server:

  1. Trên máy chủ SQL Server, mở Windows Firewall.

  2. Thêm inbound rule cho TCP port 1433 (hoặc cổng tùy chỉnh của SQL Server).

  3. Nếu sử dụng Always On Availability Groups, mở thêm các cổng 5022 (Endpoint).

✅ Tạo tài khoản có quyền SA (hoặc sysadmin) để DMS kết nối:

CREATE LOGIN migration_user WITH PASSWORD = 'StrongPassword123!';
ALTER SERVER ROLE sysadmin ADD MEMBER migration_user;

II. Tạo Azure SQL Managed Instance

Nếu bạn chưa có Azure SQL Managed Instance, hãy tạo trước khi thực hiện migration.

  1. Truy cập Azure Portal → Tạo tài nguyên → Azure SQL Managed Instance.

  2. Chọn Kích thước phù hợp với CSDL (Ít nhất 4TB dung lượng lưu trữ).

  3. Cấu hình VNET (Virtual Network) để có thể kết nối với SQL Server On-Premises.

  4. Lưu lại Tên server, user, password để dùng cho bước tiếp theo.


III. Sử dụng Azure Database Migration Service để di chuyển SQL Server lên Azure SQL Managed Instance

Bước 1: Tạo Azure Database Migration Service (DMS)

  1. Truy cập Azure Portal → Tìm kiếm Database Migration Service.

  2. Chọn Tạo mới.

  3. Nhập các thông tin:

    • Tên dịch vụ: DMS-Server-Migration.

    • Subscription: Chọn subscription của bạn.

    • Resource Group: Chọn hoặc tạo mới.

    • VNET: Chọn Virtual Network có thể kết nối với SQL Server On-Premises.

    • Pricing Tier: Chọn Standard (Miễn phí nhưng chỉ hỗ trợ offline migration) hoặc Premium (Hỗ trợ Online migration - ít downtime).

  4. Bấm "Create" để hoàn tất.


Bước 2: Bắt đầu quá trình Migration

  1. Trong DMS, chọn + New Migration Project.

  2. Đặt tên Migration Project, chọn Source Type = SQL Server, Target Type = Azure SQL Managed Instance.

  3. Chọn Online Data Migration để giảm downtime (Nếu muốn di chuyển offline, chọn Offline Migration).

  4. Nhấn Create and Run Activity.


Bước 3: Kết nối nguồn SQL Server On-Premises

  1. Nhập thông tin kết nối nguồn SQL Server:

    • Server Name: Nhập địa chỉ IP hoặc tên server SQL On-Premises.

    • Authentication: Chọn SQL Authentication.

    • User Name: Nhập migration_user (tài khoản đã tạo).

    • Password: Nhập mật khẩu.

  2. Nhấn "Next" để kiểm tra kết nối.

  3. Chọn Database cần di chuyển (DB1 - 4TB).


Bước 4: Kết nối đích Azure SQL Managed Instance

  1. Nhập thông tin Azure SQL Managed Instance:

    • Server Name: Nhập Tên Managed Instance (VD: yourmi.public.xxx.database.windows.net).

    • Authentication: SQL Authentication.

    • User Name & Password (đã tạo khi thiết lập Azure SQL MI).

  2. Nhấn "Next" để kiểm tra kết nối.


Bước 5: Cấu hình Migration

  1. Chọn Objects cần di chuyển (Schema + Data).

  2. Bấm Start Data Migration.

  3. DMS sẽ bắt đầu sao chép dữ liệu từ SQL Server On-Premises sang Azure SQL Managed Instance.

  4. Quá trình này có thể mất vài giờ hoặc vài ngày tùy theo kích thước dữ liệu.


Bước 6: Thực hiện Cutover (Chuyển đổi cuối cùng)

  1. Khi trạng thái Data Migration hiển thị 99-100% hoàn tất, chuẩn bị cho cutover.

  2. Tạm dừng các thay đổi trên SQL Server On-Premises.

  3. Áp dụng lần cuối các thay đổi mới nhất bằng cách chạy lệnh sau:

ALTER DATABASE DB1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
  1. Nhấn Complete Cutover trong Azure DMS.

  2. Chuyển hướng ứng dụng sang sử dụng Azure SQL Managed Instance.


IV. Kiểm tra sau khi di chuyển

  1. Chạy kiểm tra dữ liệu:

    • So sánh số lượng bảng, số lượng dòng giữa SQL Server On-Premises và Azure SQL MI.

    • Kiểm tra lịch sử giao dịch, khóa chính, index.

  2. Kiểm tra hiệu suất:

    • Kiểm tra execution plan trong Azure SQL MI.

    • Cấu hình lại Index, Statistics để tối ưu truy vấn.

  3. Xóa dịch vụ Azure DMS nếu không cần dùng nữa để tiết kiệm chi phí.


V. Tổng kết

✔ Sử dụng Azure Database Migration Service (DMS) để di chuyển SQL Server 2019 (4TB) lên Azure SQL Managed Instance với ít downtime. ✔ DMS hỗ trợ online migration (giảm downtime tối đa) và tự động sao chép dữ liệu. ✔ Sau khi migration, cần kiểm tra lại dữ liệu và tối ưu hệ thống.

Question #10

You are designing a streaming data solution that will ingest variable volumes of data. You need to ensure that you can change the partition count after creation. Which service should you use to ingest the data? A. Azure Event Hubs Standard B. Azure Stream Analytics C. Azure Data Factory D. Azure Event Hubs Dedicated

Question #8 *

HOTSPOT - You have an Azure Synapse Analytics dedicated SQL pool named Pool1 and an Azure Data Lake Storage Gen2 account named Account1. You plan to access the ¬les in Account1 by using an external table. You need to create a data source in Pool1 that you can reference when you create the external table. How should you complete the Transact-SQL statement? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point. Hot Area:

Solution

Câu trả lời đúng cho câu hỏi về tạo External Data Source trong Azure Synapse Analytics

Bạn cần tạo một External Data Source trong Azure Synapse Analytics (Dedicated SQL Pool - Pool1) để truy cập tệp trong Azure Data Lake Storage Gen2 (Account1).


Câu trả lời đúng

✅ LOCATION: dfs ✅ TYPE: BLOB_STORAGE


Giải thích chi tiết:

1. LOCATION = 'https://account1..core.windows.net'

  • Azure Data Lake Storage Gen2 sử dụng giao thức dfs (Data Lake filesystem) để truy cập dữ liệu.

  • Nếu bạn đang truy cập Azure Blob Storage (không có Hierarchical Namespace - HNS), bạn có thể sử dụng blob.

  • Tuy nhiên, Data Lake Storage Gen2 yêu cầu dfs để hỗ trợ thư mục phân cấp.

🔹 Lựa chọn đúng: dfs


2. TYPE = BLOB_STORAGE hoặc HADOOP

  • Khi truy cập Azure Data Lake Storage Gen2 từ Azure Synapse Analytics, cần chọn TYPE = BLOB_STORAGE.

  • HADOOP chỉ dùng cho HDFS-based storage (ví dụ: Azure HDInsight hoặc hệ thống Hadoop, không phải Azure Data Lake Storage Gen2).

🔹 Lựa chọn đúng: BLOB_STORAGE


T-SQL chính xác để tạo External Data Source

CREATE EXTERNAL DATA SOURCE source1
WITH (
    LOCATION = 'https://account1.dfs.core.windows.net',
    TYPE = BLOB_STORAGE
);

Tóm tắt lựa chọn đúng

Trường

Lựa chọn đúng

LOCATION

dfs

TYPE

BLOB_STORAGE


Tiếp theo bạn có thể làm gì?

🚀 Sau khi tạo External Data Source, bạn có thể: ✅ Tạo External Table để truy vấn dữ liệu trực tiếp từ Azure Data Lake Storage Gen2. ✅ Sử dụng PolyBase hoặc OPENROWSET để đọc dữ liệu từ tệp lưu trữ ngoài.

Question #5

You have a Microsoft SQL Server 2019 instance in an on-premises datacenter. The instance contains a 4-TB database named DB1. You plan to migrate DB1 to an Azure SQL Database managed instance. What should you use to minimize downtime and data loss during the migration? A. distributed availability groups B. database mirroring C. Always On Availability Group D. Azure Database Migration Service

Question #4

You have a Microsoft SQL Server 2019 database named DB1 that uses the following database-level and instance-level features. ✑ Clustered columnstore indexes ✑ Automatic tuning ✑ Change tracking ✑ PolyBase You plan to migrate DB1 to an Azure SQL database. What feature should be removed or replaced before DB1 can be migrated?

Question #6 *

HOTSPOT - You have an on-premises Microsoft SQL Server 2016 server named Server1 that contains a database named DB1. You need to perform an online migration of DB1 to an Azure SQL Database managed instance by using Azure Database Migration Service. How should you configure the backup of DB1? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point. Hot Area:

Solution

Question #3

You have an Azure SQL database that contains a table named factSales. FactSales contains the columns shown in the following table.

FactSales has 6 billion rows and is loaded nightly by using a batch process. You must provide the greatest reduction in space for the database and maximize performance.

Which type of compression provides the greatest space reduction for the database?

A. page compression

B. row compression

C. columnstore compression

D. columnstore archival compression

Solution

D. columnstore archival compression

Nén dữ liệu nào giúp giảm dung lượng lớn nhất và tối ưu hiệu suất trong Azure SQL Database?

Với bảng factSales có 6 tỷ dòng và được tải hàng đêm bằng quy trình batch, phương pháp nén Columnstore là lựa chọn tối ưu nhất để giảm dung lượng và tăng hiệu suất.


1. Lý do chọn Clustered Columnstore Index (CCI)

🔹 Giảm dung lượng lớn nhất

  • Nén Columnstore giúp giảm kích thước dữ liệu lên đến 10 lần so với lưu trữ dạng hàng (rowstore).

  • Thay vì lưu dữ liệu theo dòng, Columnstore lưu dữ liệu theo cột và áp dụng thuật toán nén mạnh hơn.

🔹 Tăng hiệu suất cho truy vấn phân tích

  • Nhanh hơn gấp 10 - 100 lần cho các truy vấn SUM, AVG, COUNT, GROUP BY, JOIN, rất phù hợp với dữ liệu fact trong data warehouse.

  • Giảm I/O, giúp truy vấn trên hàng tỷ dòng nhanh hơn.

🔹 Tối ưu cho tải dữ liệu theo batch

  • Clustered Columnstore Index (CCI) hoạt động tốt với quy trình tải dữ liệu hàng đêm.

  • Xử lý batch hiệu quả, giảm áp lực ghi dữ liệu.


2. So sánh với các phương pháp nén khác

Phương pháp nén
Giảm dung lượng
Hiệu suất truy vấn

Row-Level Compression

Tốt

Cải thiện nhẹ

Page-Level Compression

Tốt hơn row-level

Cải thiện tốt hơn

Clustered Columnstore Index (CCI)

Tốt nhất (10x hoặc hơn)

Nhanh nhất với truy vấn phân tích

⚡ Kết luận: Sử dụng Clustered Columnstore Index (CCI) là lựa chọn tối ưu nhất.


3. Cách triển khai Clustered Columnstore Index (CCI)

Bạn có thể tạo CCI trên bảng factSales bằng lệnh sau:

sqlCopyEditCREATE CLUSTERED COLUMNSTORE INDEX CCI_FactSales  
ON factSales;

Lưu ý:

  • Nếu cần truy vấn tìm kiếm nhanh trên một số cột cụ thể, có thể tạo Nonclustered Rowstore Index trên các cột đó để cân bằng giữa OLTP và OLAP.

Solution

Hướng dẫn từng bước để triển khai DB1 lên TestServer1 với cấu hình giống DevServer1

Bạn cần triển khai một nhóm tài nguyên mới (App1Test) chứa TestServer1 và DB1, đảm bảo rằng các cấu hình giống với App1Dev và DevServer1.


Các bước triển khai đúng theo thứ tự

1️⃣ Từ Azure Portal, xuất template của Azure Resource Manager (ARM)

  • Bước này sẽ trích xuất các cấu hình hiện tại của DevServer1 và DB1.

  • Template ARM chứa toàn bộ thiết lập về SQL Server, database, firewall rules, cài đặt bảo mật.

2️⃣ Thay đổi tên máy chủ và các biến liên quan trong template

  • Vì chúng ta đang tạo mới TestServer1 và App1Test, cần chỉnh sửa template để trỏ đến máy chủ và nhóm tài nguyên mới.

  • Điều này đảm bảo deployment không ảnh hưởng đến DevServer1 mà chỉ áp dụng cho TestServer1.

3️⃣ Từ Azure Portal, triển khai template đã chỉnh sửa

  • Sau khi chỉnh sửa xong, triển khai template lên nhóm tài nguyên App1Test.

  • Quá trình này sẽ tạo mới TestServer1 và DB1 với các cấu hình giống DevServer1.

4️⃣ Từ dự án database, triển khai schema và quyền truy cập

  • Vì schema và quyền truy cập đã được lưu trữ trong SQL Server Data Tools (SSDT) project, ta cần áp dụng chúng vào DB1 trên TestServer1.

  • Đảm bảo rằng cấu trúc và bảo mật của DB1 trên TestServer1 giống với DevServer1.


Thứ tự đúng để kéo thả hành động


Tại sao không chọn các hành động khác?

❌ Thay đổi Admin Active Directory trên TestServer1

  • Không cần thiết trong quá trình triển khai ban đầu. Nếu cần, có thể cập nhật sau khi tạo xong TestServer1.

❌ Thêm địa chỉ IP vào firewall

  • Không ảnh hưởng đến quá trình tạo tài nguyên, có thể làm sau khi database đã sẵn sàng để truy cập.


Kết luận

🚀 Thứ tự đúng giúp tạo một môi trường TestServer1 giống DevServer1 một cách chính xác. 🔹 Sử dụng template ARM giúp đảm bảo cấu hình đồng nhất. 🔹 Sau khi triển khai, áp dụng schema và quyền truy cập giúp DB1 trên TestServer1 có dữ liệu và bảo mật giống DevServer1.

Question #9 *

HOTSPOT - You plan to develop a dataset named Purchases by using Azure Databricks. Purchases will contain the following columns: ✑ ProductID ✑ ItemPrice ✑ LineTotal ✑ Quantity ✑ StoreID ✑ Minute ✑ Month ✑ Hour ✑ Year ✑ Day You need to store the data to support hourly incremental load pipelines that will vary for each StoreID. The solution must minimize storage costs. How should you complete the code? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point. Hot Area:

Question #7 *

DRAG DROP - You have a resource group named App1Dev that contains an Azure SQL Database server named DevServer1. DevServer1 contains an Azure SQL database named DB1. The schema and permissions for DB1 are saved in a Microsoft SQL Server Data Tools (SSDT) database project. You need to populate a new resource group named App1Test with the DB1 database and an Azure SQL Server named TestServer1. The resources in App1Test must have the same con¬gurations as the resources in App1Dev. Which four actions should you perform in sequence? To answer, move the appropriate actions from the list of actions to the answer area and arrange them in the correct order. Select and Place:

Thứ tự

Hành động cần thực hiện

1

Từ Azure Portal, xuất template của Azure Resource Manager

2

Thay đổi tên máy chủ và các biến liên quan trong template

3

Từ Azure Portal, triển khai template

4

Từ dự án database, triển khai schema và quyền truy cập

Question #2

DRAG DROP - You have SQL Server 2019 on an Azure virtual machine that contains an SSISDB database. A recent failure causes the master database to be lost. You discover that all Microsoft SQL Server integration Services (SSIS) packages fail to run on the virtual machine. Which four actions should you perform in sequence to resolve the issue? To answer, move the appropriate actions from the list of actions to the answer area and arrange them in the correct. Select and Place:

Solution

Giải pháp tối ưu để giảm thời gian downtime và tránh mất dữ liệu khi di chuyển lên Azure SQL Managed Instance

✅ Đáp án đúng: D. Azure Database Migration Service (DMS)


1. Vì sao chọn Azure Database Migration Service (DMS)?

🔹 Hỗ trợ di chuyển dữ liệu trực tuyến (Online Migration) → Giúp giảm downtime xuống mức tối thiểu bằng cách đồng bộ dữ liệu liên tục từ SQL Server 2019 sang Azure SQL Managed Instance. 🔹 Giữ nguyên tính toàn vẹn của dữ liệu → Đảm bảo không mất dữ liệu trong quá trình di chuyển. 🔹 Hỗ trợ di chuyển cơ sở dữ liệu lớn (4TB+) → DMS được thiết kế để hỗ trợ các cơ sở dữ liệu có dung lượng lớn. 🔹 Tích hợp tự động → Tự động chuyển schema, dữ liệu, index từ SQL Server 2019 lên Azure SQL Managed Instance. 🔹 Có khả năng giám sát và xử lý lỗi → Hỗ trợ theo dõi tiến trình và khắc phục sự cố trong quá trình di chuyển.


2. Cách thức hoạt động của DMS

1️⃣ Chuẩn bị CSDL nguồn (SQL Server 2019 On-Premises)

  • Kiểm tra khả năng kết nối của SQL Server với Azure.

  • Bật TCP/IP và cho phép truy cập từ Azure.

  • Đảm bảo không có tính năng không được hỗ trợ trong Azure SQL Managed Instance.

2️⃣ Tạo dịch vụ Azure Database Migration Service (DMS) trên Azure

  • Truy cập Azure Portal để tạo DMS.

  • Chọn chế độ Online Migration để đảm bảo di chuyển trực tuyến, ít downtime.

3️⃣ Bắt đầu đồng bộ dữ liệu

  • DMS sao chép toàn bộ dữ liệu ban đầu từ SQL Server lên Azure SQL Managed Instance.

  • Sau đó, DMS tiếp tục đồng bộ các thay đổi mới từ SQL Server để đảm bảo dữ liệu luôn được cập nhật.

4️⃣ Cắt chuyển (Cutover - Hoàn tất di chuyển)

  • Khi dữ liệu đã được đồng bộ hoàn toàn, tạm dừng các thay đổi trên SQL Server.

  • Áp dụng các thay đổi cuối cùng, chuyển hướng ứng dụng sang Azure SQL Managed Instance.


3. Vì sao không chọn các phương án khác?

Tùy chọn

Lý do không phù hợp

A. Distributed Availability Groups

❌ Không được hỗ trợ cho Azure SQL Managed Instance, chỉ hoạt động giữa các SQL Server On-Premises.

B. Database Mirroring

❌ Đã bị loại bỏ trong SQL Server 2019 và không hỗ trợ Azure SQL Managed Instance.

C. Always On Availability Group

❌ Không thể sử dụng để di chuyển trực tiếp lên Azure SQL Managed Instance. Chỉ hoạt động giữa các SQL Server truyền thống.


4. Kết luận & Giải pháp tối ưu

✔ Sử dụng Azure Database Migration Service (DMS) để di chuyển dữ liệu một cách trực tuyến, ít downtime, và đảm bảo không mất dữ liệu. ✔ DMS giúp bạn dễ dàng thực hiện migration mà không cần quá nhiều cấu hình phức tạp. ✔ Tránh các phương pháp lỗi thời hoặc không hỗ trợ trong Azure SQL Managed Instance. 🚀

Solution

Đáp án đúng cho việc lưu trữ dữ liệu Purchases trong Azure Databricks

Bạn cần hỗ trợ pipeline tải dữ liệu gia tăng theo giờ và biến thiên theo từng StoreID, đồng thời tối ưu chi phí lưu trữ. Do đó, bạn cần chọn partitioning hợp lý và định dạng lưu trữ tối ưu.


1. Chiến lược Partitioning

✅ .partitionBy("StoreID", "Year", "Month", "Day", "Hour")

Vì sao chọn partitionBy?

  • Partition giúp truy vấn nhanh hơn → Nếu dữ liệu được phân vùng theo StoreID, Year, Month, Day, Hour, khi truy vấn theo StoreID hoặc theo giờ, Databricks sẽ chỉ đọc các phân vùng cần thiết thay vì toàn bộ dữ liệu.

  • Tăng hiệu suất cho tải dữ liệu gia tăng (incremental load) → Vì pipeline tải dữ liệu theo giờ, việc phân vùng theo thời gian sẽ giúp tối ưu hiệu suất truy vấn và lưu trữ.

Vì sao không chọn các phương án khác?

  • ❌ .bucketBy() → Chỉ giúp tổ chức dữ liệu trong một số lượng bucket cố định, không hỗ trợ partition pruning (lọc nhanh dữ liệu).

  • ❌ .sortBy() → Chỉ giúp sắp xếp trong từng file nhưng không tạo partition.

  • ❌ .range() → Không phải là tùy chọn hợp lệ trong .write().


2. Định dạng lưu trữ

✅ .parquet("/Purchases")

Vì sao chọn Parquet?

  • Lưu trữ theo cột (columnar storage) → Hiệu suất truy vấn cao hơn CSV hoặc JSON.

  • Nén dữ liệu tốt hơn → Giảm chi phí lưu trữ, đặc biệt khi lưu trữ dữ liệu lớn.

  • Hỗ trợ tốt khi sử dụng partitionBy → Giúp đọc dữ liệu nhanh hơn khi truy vấn theo thời gian hoặc StoreID.

Vì sao không chọn các phương án khác?

  • ❌ .csv("/Purchases") → Không hỗ trợ partition pruning và chiếm nhiều dung lượng hơn.

  • ❌ .json("/Purchases") → Thích hợp hơn cho dữ liệu phi cấu trúc, nhưng hiệu suất truy vấn thấp hơn Parquet.

  • ❌ .saveAsTable("/Purchases") → Dùng để lưu dữ liệu vào bảng trong Databricks nhưng không trực tiếp hỗ trợ partitioning hiệu quả như .parquet().


3. Mã lệnh hoàn chỉnh

df.write
    .partitionBy("StoreID", "Year", "Month", "Day", "Hour")
    .mode("append")
    .parquet("/Purchases")

4. Tóm tắt lựa chọn đúng

Lựa chọn

Giải thích

Partitioning Method

.partitionBy("StoreID", "Year", "Month", "Day", "Hour") (tối ưu hóa tải dữ liệu gia tăng và truy vấn)

Storage Format

.parquet("/Purchases") (hiệu suất cao, giảm chi phí lưu trữ)


🚀 Lợi ích của phương pháp này

✅ Hỗ trợ tải dữ liệu gia tăng theo giờ, tối ưu hiệu suất truy vấn. ✅ Tiết kiệm chi phí lưu trữ do Parquet nén dữ liệu tốt. ✅ Dễ dàng mở rộng cho lượng dữ liệu lớn trong Azure Databricks.

Solution

Tính năng nào cần loại bỏ hoặc thay thế trước khi di chuyển DB1 lên Azure SQL Database?

Bạn đang có một cơ sở dữ liệu SQL Server 2019 (DB1) sử dụng các tính năng sau: ✅ Clustered Columnstore Indexes ✅ Automatic Tuning ✅ Change Tracking ❌ PolyBase

1. Đánh giá khả năng hỗ trợ trên Azure SQL Database


2. Tính năng cần loại bỏ hoặc thay thế: PolyBase

❌ PolyBase không được hỗ trợ trên Azure SQL Database.

Vì sao?

  • PolyBase trên SQL Server chủ yếu dùng để truy vấn dữ liệu từ nguồn bên ngoài như Hadoop, Azure Blob Storage, hoặc cơ sở dữ liệu khác thông qua T-SQL.

  • Azure SQL Database không hỗ trợ PolyBase, do đó bạn phải thay thế bằng phương pháp khác.

3. Giải pháp thay thế cho PolyBase

🔹 Truy vấn dữ liệu từ nguồn bên ngoài bằng Elastic Query (nếu cần kết nối với Azure SQL Database khác). 🔹 Sử dụng Azure Data Factory hoặc Azure Synapse Analytics để tích hợp dữ liệu từ nhiều nguồn khác nhau. 🔹 Dùng OPENROWSET để truy vấn dữ liệu từ Azure Blob Storage, ví dụ:


4. Kế hoạch hành động trước khi di chuyển

✅ Gỡ bỏ hoặc thay thế PolyBase trước khi di chuyển. ✅ Nếu đang dùng PolyBase để truy vấn dữ liệu ngoài, hãy xem xét Elastic Query hoặc Azure Data Factory. ✅ Kiểm tra và tối ưu hiệu suất sau khi di chuyển lên Azure SQL Database.

PolyBase là gì?

PolyBase là một tính năng của Microsoft SQL Server dùng để truy vấn dữ liệu từ nguồn bên ngoài bằng cách sử dụng T-SQL tiêu chuẩn. Nó cho phép SQL Server truy xuất dữ liệu từ các hệ thống lưu trữ khác như Azure Blob Storage, Hadoop, và các hệ quản trị cơ sở dữ liệu khác mà không cần di chuyển dữ liệu về SQL Server.


1. Công dụng của PolyBase

✅ Truy vấn dữ liệu từ nhiều nguồn khác nhau bằng T-SQL ✅ Tích hợp dữ liệu từ nguồn bên ngoài mà không cần ETL ✅ Hỗ trợ truy vấn dữ liệu lớn (Big Data) ✅ Tối ưu hiệu suất truy vấn bằng cách dùng các công cụ phân tán như Hadoop

Ví dụ, bạn có thể sử dụng PolyBase để truy vấn một file CSV nằm trong Azure Blob Storage như thể nó là một bảng trong SQL Server:


2. PolyBase hỗ trợ những nguồn dữ liệu nào?

  • Azure Blob Storage 🏢 (Truy xuất dữ liệu từ tệp CSV, JSON, Parquet, Avro)

  • Azure Data Lake Storage 🌊 (Dữ liệu phi cấu trúc & bán cấu trúc)

  • Hadoop Distributed File System (HDFS) 🏗️ (Hệ thống tệp phân tán phổ biến trong Big Data)

  • SQL Server khác hoặc PostgreSQL, Oracle, Teradata 🔗 (Truy vấn liên cơ sở dữ liệu)

  • MongoDB, CosmosDB 🌍 (Dữ liệu NoSQL)


3. PolyBase hoạt động như thế nào?

1️⃣ Tạo External Data Source (nguồn dữ liệu bên ngoài). 2️⃣ Tạo External Table (bảng đại diện cho dữ liệu bên ngoài). 3️⃣ Dùng T-SQL để truy vấn dữ liệu từ nguồn ngoài như truy vấn bảng thông thường.

Ví dụ: Truy vấn dữ liệu từ Azure Blob Storage thông qua PolyBase


4. PolyBase có được hỗ trợ trong Azure SQL Database không?

🚫 Không. PolyBase KHÔNG được hỗ trợ trong Azure SQL Database. ✅ Tuy nhiên, bạn có thể thay thế bằng:

  • Elastic Query (nếu cần truy vấn dữ liệu giữa các Azure SQL Database).

  • OPENROWSET (nếu cần đọc dữ liệu từ Azure Blob Storage).

  • Azure Data Factory hoặc Synapse Analytics (nếu cần tích hợp dữ liệu lớn).

Ví dụ thay thế PolyBase bằng OPENROWSET để đọc tệp CSV từ Azure Blob Storage:


5. Khi nào nên sử dụng PolyBase?

✅ Khi bạn cần truy vấn dữ liệu lớn mà không muốn nhập dữ liệu vào SQL Server. ✅ Khi bạn muốn kết nối với nhiều hệ thống cơ sở dữ liệu khác nhau mà không cần tích hợp ETL. ✅ Khi bạn đang làm việc với Big Data trên Hadoop hoặc Azure Data Lake.

❌ Khi nào KHÔNG dùng PolyBase?

  • Khi bạn đang sử dụng Azure SQL Database (vì nó không hỗ trợ PolyBase).

  • Khi bạn cần ETL dữ liệu một cách phức tạp (thay vào đó, dùng Azure Data Factory).

  • Khi bạn cần truy vấn dữ liệu không thường xuyên (dùng OPENROWSET thay thế).


Tóm tắt

✅ PolyBase là một công cụ mạnh trong SQL Server giúp truy vấn dữ liệu ngoài như dữ liệu trên Hadoop, Azure Blob Storage, và SQL Server khác bằng T-SQL. ❌ Không được hỗ trợ trên Azure SQL Database, cần thay thế bằng Elastic Query, OPENROWSET hoặc Azure Data Factory.

Tính năng

Hỗ trợ trên Azure SQL Database?

Hành động cần thực hiện?

Clustered Columnstore Indexes

✅ Có hỗ trợ

Không cần thay đổi

Automatic Tuning

✅ Có hỗ trợ

Không cần thay đổi

Change Tracking

✅ Có hỗ trợ

Không cần thay đổi

PolyBase

❌ Không hỗ trợ

Phải loại bỏ hoặc thay thế

SELECT *  
FROM OPENROWSET(BULK 'https://yourstorageaccount.blob.core.windows.net/container/file.csv',  
                FORMAT = 'CSV',  
                HEADER_ROW = TRUE) AS data;
sqlCopyEditSELECT *  
FROM my_external_table;
sqlCopyEditCREATE EXTERNAL DATA SOURCE AzureBlobStorage  
WITH (  
    TYPE = BLOB_STORAGE,  
    LOCATION = 'https://yourstorageaccount.blob.core.windows.net/container'  
);

CREATE EXTERNAL FILE FORMAT CsvFormat  
WITH (  
    FORMAT_TYPE = DELIMITEDTEXT,  
    FORMAT_OPTIONS (FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2)  
);

CREATE EXTERNAL TABLE ExternalTable (  
    Id INT,  
    Name NVARCHAR(100),  
    Amount DECIMAL(10,2)  
)  
WITH (  
    LOCATION = 'data.csv',  
    DATA_SOURCE = AzureBlobStorage,  
    FILE_FORMAT = CsvFormat  
);

SELECT * FROM ExternalTable;
sqlCopyEditSELECT *  
FROM OPENROWSET(BULK 'https://yourstorageaccount.blob.core.windows.net/container/data.csv',  
                FORMAT = 'CSV',  
                HEADER_ROW = TRUE) AS data;