Ngân hàng đề — Microsoft Azure Database Administrator
Tìm thấy 217 câu.
You have two Azure VMs named DBServer1 and DBServer2. Each of them hosts a default SQL Server instance. DBServer1 is in the East US Azure region and contains a database named DatabaseA. DBServer2 is in the West US Azure region.
DBServer1 has a high volume of data changes and low latency requirements for data writes.
You need to configure a new availability group for DatabaseA. The secondary replica will reside on DBServer2.
What should you do?
- A Configure the primary endpoint as TCP://DBServer1.contoso.com:445, configure the secondary endpoint as TCP://DBServer2.contoso.com:445, and set the availability mode to Asynchronous.
- B Configure the primary endpoint as TCP://DBServer1.contoso.com:445, configure the secondary endpoint as TCP://DBServer2.contoso.com:445, and set the availability mode to Synchronous.
- C Configure the primary endpoint as TCP://DBServer1.contoso.com:5022, configure the secondary endpoint as TCP://DBServer2.contoso.com:5022, and set the availability mode to Asynchronous.
- D Configure the primary endpoint as TCP://DBServer1.contoso.com:5022, configure the secondary endpoint as TCP://DBServer2.contoso.com:5022, and set the availability mode to Synchronous.
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi mô tả một tình huống trong Microsoft Azure: Bạn có subscription Azure sử dụng domain contoso.com, với hai Azure Virtual Machines (VMs) tên DBServer1 (vùng East US, chứa database DatabaseA trên SQL Server instance mặc định, có lượng thay đổi dữ liệu cao và yêu cầu độ trễ thấp cho ghi dữ liệu) và DBServer2 (vùng West US).
📌 Yêu cầu chính: Cấu hình một Always On Availability Group (AG) mới cho DatabaseA, với primary replica trên DBServer1 và secondary replica trên DBServer2.
🛠️ Thách thức kỹ thuật:
- Hai VMs ở hai vùng Azure khác nhau (East US và West US), khoảng cách địa lý xa → mạng không đủ nhanh cho synchronous replication.
- DBServer1 có high volume of data changes (thay đổi dữ liệu lớn) và low latency cho writes (ghi dữ liệu nhanh) → ưu tiên asynchronous để tránh block writes.
- Cần cấu hình endpoints (TCP endpoints) cho AG listeners và availability mode.
✅ Mục tiêu: Đảm bảo high availability cross-region, với secondary replica trên DBServer2.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Configure the primary endpoint as TCP://DBServer1.contoso.com:5022, configure the secondary endpoint as TCP://DBServer2.contoso.com:5022, and set the availability mode to Asynchronous.
Lý do chi tiết 🧠:
- Port 5022: Đây là port khuyến nghị chuẩn cho SQL Server AG endpoints trên Azure VMs (không dùng port 1433 vì dành cho SQL client, tránh conflict). Microsoft docs chỉ rõ sử dụng dynamic port hoặc fixed như 5022 để tránh firewall issues.
- Asynchronous mode: Phù hợp cho cross-region (East US ↔ West US) vì khoảng cách xa gây latency cao (~50-100ms), synchronous sẽ block writes trên primary (vi phạm low latency writes). Async cho phép primary ghi nhanh, secondary sync sau (commit không chờ).
- Không dùng port 445 (dành cho SMB file sharing, không phải AG).
📘 Kiến thức cập nhật 2026: Vẫn áp dụng theo SQL Server 2022+ và Azure SQL VM guidelines (không thay đổi cơ bản).
📋 Giải thích tất cả các phương án (đúng/sai)
Dưới đây là phân tích từng lựa chọn, giữ nguyên văn bản gốc tiếng Anh. Mỗi phương án được đánh giá dựa trên best practices Azure SQL AG cross-region.
-
❌ Phương án SAI: Configure the primary endpoint as TCP://DBServer1.contoso.com:445, configure the secondary endpoint as TCP://DBServer2.contoso.com:445, and set the availability mode to Asynchronous.
Giải thích: Port 445 sai hoàn toàn (là port SMB cho file sharing, không dùng cho AG endpoints → gây lỗi kết nối). Async đúng cho cross-region, nhưng port sai làm AG fail setup. -
❌ Phương án SAI: Configure the primary endpoint as TCP://DBServer1.contoso.com:445, configure the secondary endpoint as TCP://DBServer2.contoso.com:445, and set the availability mode to Synchronous.
Giải thích: Port 445 sai như trên, cộng thêm Synchronous mode không khả thi cho cross-region (latency cao → writes block, vi phạm yêu cầu low latency). AG sẽ timeout hoặc failover kém. -
✅ Phương án ĐÚNG: Configure the primary endpoint as TCP://DBServer1.contoso.com:5022, configure the secondary endpoint as TCP://DBServer2.contoso.com:5022, and set the availability mode to Asynchronous.
Giải thích: Port 5022 chuẩn cho AG trên Azure VMs (mở firewall NSG cho port này). Asynchronous lý tưởng cho high changes/low latency writes cross-region (primary không chờ sync). Hoàn hảo khớp scenario. -
❌ Phương án SAI: Configure the primary endpoint as TCP://DBServer1.contoso.com:5022, configure the secondary endpoint as TCP://DBServer2.contoso.com:5022, and set the availability mode to Synchronous.
Giải thích: Port 5022 đúng, nhưng Synchronous sai (cross-region latency cao → primary writes chậm/blocked, không đáp ứng "low latency requirements"). Chỉ dùng sync cho same-region/low-latency network.
📚 Tài liệu tham khảo (cập nhật mới nhất 2026)
- Microsoft Docs: Always On AG on Azure VMs → Khuyến nghị port 5022 & async cho cross-region.
- SQL Server AG Best Practices → Async cho geo-redundancy.
- Azure NSG: Mở port 5022 TCP cho AG endpoints (SQL Server 2022+).
🔍 Lưu ý: Kiểm tra Azure portal/ PowerShell để verify endpoints sau setup (T-SQL:SELECT * FROM sys.availability_group_listener_ip_addresses).
You need to ensure that all the databases have the same configuration. The solution must meet the following requirements:
✑ Auditing must be enabled.
✑ Azure Defender must be enabled.
✑ Public network access must be disabled.
✑ Administrative effort must be minimized.
Which two resources should you create in the subscription? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
- A an Azure Automation runbook
- B an Azure Policy initiative
- C an Azure Policy assignment
- D an Azure Automation account
- E an Azure Policy definition
Xem giải thích
🧩 Giải thích nội dung câu hỏi
Câu hỏi này tập trung vào việc quản lý và chuẩn hóa cấu hình cho 500 cơ sở dữ liệu Azure SQL được lưu trữ trên 50 instances SQL Server chạy trên Azure Virtual Machines (VMs) trong một Azure subscription. Mục tiêu là đảm bảo tất cả các cơ sở dữ liệu có cấu hình giống nhau, với các yêu cầu cụ thể sau:
- Auditing phải được bật (ghi nhật ký hoạt động để tuân thủ và bảo mật).
- Azure Defender phải được bật (nay là Microsoft Defender for SQL, cung cấp bảo vệ nâng cao chống tấn công và lỗ hổng).
- Public network access phải bị tắt (chặn truy cập từ mạng công khai để tăng bảo mật).
- Giảm thiểu nỗ lực quản trị (tức là sử dụng giải pháp tự động hóa, không cần can thiệp thủ công lặp lại).
Câu hỏi yêu cầu chọn hai resources cần tạo trong subscription để đạt được điều này. Đây là câu hỏi kiểu multiple correct answers (mỗi lựa chọn đúng đáng 1 điểm), phù hợp với cơ chế Azure Policy – công cụ mạnh mẽ của Azure để enforce (áp đặt) cấu hình tự động trên quy mô lớn, giảm thiểu công sức quản trị. Kiến thức dựa trên phiên bản Azure Policy mới nhất đến năm 2026, hỗ trợ tích hợp sâu với Azure SQL và Defender for Cloud (trước là Azure Defender).
📘 Tài liệu tham khảo:
- Azure Policy documentation (Microsoft Docs, cập nhật 2025-2026).
- Azure SQL auditing & Defender và Defender for SQL.
✅ Đáp án đúng và lý do lựa chọn
Hai resources đúng cần tạo là:
- an Azure Policy definition
- an Azure Policy assignment
Lý do:
🛠️ Azure Policy definition định nghĩa các quy tắc cụ thể (ví dụ: "bật auditing", "bật Defender", "tắt public access") cho Azure SQL databases và SQL on VMs. Không có definition, không thể áp dụng policy.
🛠️ Azure Policy assignment gán definition đó vào scope (subscription, resource group chứa 50 VMs và 500 DBs), tự động enforce và remediate (sửa chữa tự động) nếu config sai, giảm thiểu nỗ lực quản trị xuống mức zero-touch (không cần script thủ công).
Kết hợp hai cái này tạo ra giải pháp tự động hóa governance hoàn hảo cho quy mô lớn, phù hợp 100% yêu cầu. Không dùng Automation vì policy hiệu quả hơn cho compliance enforcement.
📋 Phân tích chi tiết tất cả các phương án
Dưới đây là phân tích từng lựa chọn, giữ nguyên nội dung gốc bằng tiếng Anh. Mỗi phương án được đánh giá đúng/sai với lý do cụ thể dựa trên best practices Azure 2026:
-
[SAI] an Azure Automation runbook ❌
Giải thích: Azure Automation runbook dùng để chạy script PowerShell/Python định kỳ (như kiểm tra và sửa config thủ công), nhưng không tự động enforce realtime như Policy. Với 500 DBs, runbook đòi hỏi lập lịch, bảo trì script phức tạp, tăng nỗ lực quản trị (vi phạm yêu cầu minimize effort). Không phù hợp cho auditing/Defender/public access enforcement tự động. -
[SAI] an Azure Policy initiative ❌
Giải thích: Azure Policy initiative là bộ sưu tập nhiều policy definitions (như bộ built-in cho security), nhưng câu hỏi yêu cầu tạo resources để custom config cho auditing/Defender/public access trên SQL cụ thể. Initiative không thay thế definition + assignment cơ bản; dùng initiative sẽ thừa thãi và không trực tiếp giải quyết (phải có definition trước). Không phải "hai resources" cần thiết nhất. -
[ĐÚNG] an Azure Policy assignment ✅
Giải thích: Assignment là bước gán policy definition vào scope (subscription), kích hoạt tự động kiểm tra và sửa config cho tất cả 500 DBs/50 VMs. Hỗ trợ remediation tasks cho Defender và auditing, giảm effort xuống mức thấp nhất. Bắt buộc phải có để policy hoạt động. -
[SAI] an Azure Automation account ❌
Giải thích: Azure Automation account chỉ là container để lưu runbooks, schedules, modules – không tự enforce config. Cần tạo runbook riêng để script config DBs, dẫn đến quản trị thủ công lặp lại, không scale tốt cho 500 DBs và không realtime như Policy. Không đáp ứng minimize effort. -
[ĐÚNG] an Azure Policy definition ✅
Giải thích: Definition tạo custom policy với rules chính xác (ví dụ: if-then cho auditing enabled, Defender on, public access off). Là nền tảng để assignment sử dụng, hỗ trợ built-in templates cho Azure SQL (cập nhật 2026 với Defender integration). Không có nó, không thể tùy chỉnh cho yêu cầu cụ thể.
🛡️ Kết luận: Sử dụng Azure Policy definition + assignment là giải pháp tối ưu, native của Azure cho governance quy mô lớn, đảm bảo compliance 100% mà không cần Automation. Nếu triển khai, scope assignment vào subscription để cover tất cả resources!
You plan to create a database named DB1 in Pool1.
You need to ensure that when tables are created in DB1, the tables are available automatically as external tables to the built-in serverless SQL pool.
Which format should you use for the tables in DB1?
- A JSON
- B CSV
- C Parquet
- D ORC
Xem giải thích
🧩 Phân tích chi tiết câu hỏi trắc nghiệm
📘 Nội dung câu hỏi:
Câu hỏi xoay quanh Azure Synapse Analytics, một dịch vụ phân tích dữ liệu tích hợp của Microsoft Azure. Cụ thể:
- Bạn có một workspace Azure Synapse Analytics tên WS1, chứa một Apache Spark pool tên Pool1.
- Kế hoạch tạo một database tên DB1 trong Pool1.
- Yêu cầu chính: Đảm bảo rằng khi tạo tables trong DB1, các tables này sẽ tự động được expose (có sẵn) dưới dạng external tables cho built-in serverless SQL pool (pool SQL không cần cấu hình, chạy theo nhu cầu).
- Câu hỏi tập trung vào format dữ liệu (định dạng file) nào cần sử dụng cho các tables trong DB1 để kích hoạt tính năng tự động này.
Tính năng này giúp tích hợp liền mạch giữa Spark pool (dùng cho xử lý dữ liệu lớn với Spark) và serverless SQL pool (dùng cho truy vấn SQL nhanh chóng), mà không cần thủ công tạo external tables. Đây là một phần của Apache Spark integration trong Synapse, nơi dữ liệu từ Spark được chia sẻ tự động với SQL engine.
🛠️ Đáp án đúng: Parquet ✅
Lý do lựa chọn:
Trong Azure Synapse Analytics (phiên bản mới nhất đến 2026), khi tạo managed tables trong database của Apache Spark pool sử dụng Parquet format, Synapse sẽ tự động tạo và quản lý các external tables tương ứng trong serverless SQL pool. Điều này giúp truy vấn dữ liệu từ Spark một cách liền mạch qua SQL mà không cần cấu hình thêm. Tính năng này được thiết kế đặc biệt cho Parquet vì định dạng này hỗ trợ schema enforcement, partitioning, và columnar storage tối ưu cho query performance.
📋 Giải thích tất cả các phương án
-
JSON ❌
Phân tích sai: JSON là định dạng text-based, không hỗ trợ schema mạnh mẽ và columnar storage như Parquet. Azure Synapse không tự động expose tables JSON từ Spark pool thành external tables cho serverless SQL pool. Bạn phải thủ công tạo external tables nếu dùng JSON, dẫn đến không đáp ứng yêu cầu "tự động". -
CSV ❌
Phân tích sai: CSV chỉ là định dạng phẳng, thiếu hỗ trợ metadata schema và partitioning tự động. Synapse không hỗ trợ tự động convert CSV tables từ Spark thành external tables cho serverless SQL pool, vì CSV không tối ưu cho query lớn và dễ gặp vấn đề dữ liệu không nhất quán. -
Parquet ✅
Phân tích đúng: Như đã giải thích ở trên, Parquet là định dạng columnar hiệu suất cao, được Synapse hỗ trợ tự động expose managed tables từ Spark database (như DB1) thành external tables trong serverless SQL pool. Không cần code thêm, chỉ cần tạo table vớisaveAsTableở Spark sử dụng Parquet. -
ORC ❌
Phân tích sai: ORC (Optimized Row Columnar) là định dạng tốt cho Hive/Spark nhưng Azure Synapse không hỗ trợ tự động expose ORC tables từ Spark pool thành external tables cho serverless SQL pool. Tính năng chỉ dành riêng cho Parquet, ORC yêu cầu cấu hình thủ công.
📚 Tài liệu tham khảo (cập nhật mới nhất đến 2026):
- Apache Spark tables as external tables in serverless SQL pools - Azure Synapse Analytics | Microsoft Learn ✅ (Xác nhận Parquet là format duy nhất hỗ trợ auto-external tables).
- Create tables in an Apache Spark pool - Azure Synapse Analytics | Microsoft Learn 🛠️ (Chi tiết về managed tables và format hỗ trợ).
- Azure Synapse release notes 2024-2026: Không thay đổi tính năng cốt lõi này, vẫn ưu tiên Parquet cho integration Spark-SQL.
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần ví dụ code Spark tạo table Parquet, hãy hỏi thêm nhé!
You plan to deploy a Windows app named App1 that will authenticate to DB2 by using SQL authentication.
You need to ensure that App1 can access DB2. The solution must meet the following requirements:
✑ App1 must be able to view only DB2.
✑ Administrative effort must be minimized.
What should you create?
- A a contained database user for App1 on DB2
- B a login for App1 on Server1
- C a contained database user from an external provider for App1 on DB2
- D a contained database user from a Windows login for App1 on DB2
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi xoay quanh việc quản lý bảo mật truy cập cơ sở dữ liệu trong Azure SQL Database. Cụ thể:
- Bạn có một Azure subscription chứa server tên Server1, trên đó lưu trữ hai cơ sở dữ liệu Azure SQL là DB1 và DB2.
- Bạn dự định triển khai ứng dụng Windows tên App1, ứng dụng này sẽ xác thực (authenticate) vào DB2 bằng phương thức SQL authentication (sử dụng tên người dùng và mật khẩu SQL, không phải Windows auth hay AAD).
- Yêu cầu chính:
- App1 chỉ có thể xem (access) DB2, không truy cập DB1 hoặc các tài nguyên khác (nguyên tắc least privilege).
- Giảm thiểu nỗ lực quản trị (minimize administrative effort): Không muốn tạo nhiều tài khoản phức tạp, dễ quản lý.
- Câu hỏi yêu cầu: Bạn cần tạo gì để đáp ứng các yêu cầu trên? (What should you create?)
📘 Kiến thức nền tảng (cập nhật đến 2026): Trong Azure SQL Database (phiên bản mới nhất hỗ trợ contained database users từ SQL Server 2012 trở lên, vẫn áp dụng đầy đủ), contained database user cho phép xác thực trực tiếp tại mức database mà không cần server-level login. Điều này lý tưởng cho SQL authentication, giới hạn truy cập chỉ trong DB cụ thể, và giảm công sức vì không cần quản lý login riêng trên server. Tài liệu tham khảo: Microsoft Docs - Contained database users.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: a contained database user for App1 on DB2
Lý do:
- Phương án này tạo user contained (chứa trong DB) trực tiếp trên DB2, sử dụng SQL authentication (username/password do App1 cung cấp).
- ✅ Đáp ứng yêu cầu "chỉ xem DB2": User chỉ tồn tại và có quyền trong DB2, không ảnh hưởng đến DB1 hay server.
- ✅ Giảm thiểu nỗ lực quản trị: Không cần tạo login trên Server1 (chỉ một lệnh CREATE USER trên DB2), dễ di chuyển DB nếu cần.
- 🛠️ Cách thực hiện mẫu:
CREATE USER [App1User] WITH PASSWORD = 'StrongPassword123!';trên DB2.
📋 Giải thích tất cả các phương án (đúng/sai)
Dưới đây là phân tích từng lựa chọn, giữ nguyên văn bản gốc bằng tiếng Anh. Mỗi phương án được đánh giá dựa trên yêu cầu câu hỏi:
-
a contained database user for App1 on DB2
✅ Đúng: Như giải thích trên, đây là giải pháp tối ưu cho SQL authentication, giới hạn phạm vi chỉ DB2 và đơn giản nhất (không cần server login). Hoàn hảo cho app Windows sử dụng chuỗi kết nối SQL auth. -
a login for App1 on Server1
❌ Sai: Tạo login trên Server1 (server-level) cho phép truy cập tất cả database trên server (bao gồm DB1 và DB2 nếu cấp quyền). Vi phạm yêu cầu "chỉ DB2". Ngoài ra, cần thêm bước tạo user trong DB2 → tăng nỗ lực quản trị (hai bước thay vì một). -
a contained database user from an external provider for App1 on DB2
❌ Sai: "External provider" ám chỉ xác thực từ Azure AD (AAD) hoặc nhà cung cấp ngoài (như Microsoft Entra ID), không phải SQL authentication. App1 dùng SQL auth thuần túy (username/password), nên không phù hợp. Thêm nữa, AAD yêu cầu cấu hình phức tạp hơn. -
a contained database user from a Windows login for App1 on DB2
❌ Sai: "Windows login" dùng cho Windows authentication (integrated security, Kerberos/NTLM), không hỗ trợ SQL authentication. App1 là Windows app nhưng chỉ định rõ dùng SQL auth, nên không khớp. Cần server login Windows trước → tăng nỗ lực.
🛠️ Khuyến nghị thực tế
- Sau khi tạo contained user, cấp quyền cụ thể cho App1:
ALTER ROLE db_datareader ADD MEMBER [App1User];(chỉ đọc nếu cần). - Kiểm tra bằng Azure Portal > Server1 > DB2 > SQL users.
- Tài liệu tham khảo bổ sung:
Hy vọng phân tích này giúp bạn nắm vững! 🚀
The company plans to double the number of devices that are monitored.
You need to monitor a Stream Analytics job to ensure that there are enough processing resources to handle the additional load.
Which metric should you monitor?
- A Input Deserialization Errors
- B Late Input Events
- C Early Input Events
- D Watermark delay
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi tập trung vào Azure Stream Analytics – một dịch vụ xử lý dữ liệu thời gian thực của Microsoft Azure, được sử dụng để giám sát các thiết bị (devices).
Công ty đang sử dụng dịch vụ này để theo dõi các thiết bị hiện tại và dự định tăng gấp đôi số lượng thiết bị cần giám sát.
Nhiệm vụ là giám sát một Stream Analytics job để đảm bảo có đủ tài nguyên xử lý (processing resources) nhằm xử lý được tải thêm (additional load).
Cụ thể, cần chọn metric phù hợp nhất từ Azure Monitor để phát hiện sớm tình trạng quá tải, backlog dữ liệu hoặc thiếu tài nguyên CPU/memory.
📘 Kiến thức cập nhật: Theo tài liệu Azure Stream Analytics mới nhất (tính đến 2026, phiên bản hỗ trợ metrics nâng cao trong Azure Monitor), các metric được theo dõi qua portal Azure hoặc Azure Monitor workbook để scale Streaming Units (SU) kịp thời.
✅ Đáp án đúng: Watermark delay
Lý do lựa chọn:
Watermark delay là metric cốt lõi đo lường độ trễ từ thời gian sự kiện đầu vào (input event time) đến thời gian hệ thống hiện tại.
- Khi số lượng thiết bị tăng gấp đôi, lượng dữ liệu streaming tăng đột biến → nếu job thiếu resources (CPU/memory/SU), dữ liệu sẽ backlog, dẫn đến Watermark delay tăng cao (thường > vài giây/phút).
- Metric này trực tiếp phản ánh khả năng xử lý kịp thời, giúp admin scale up SU (Streaming Units) hoặc optimize query để tránh mất dữ liệu.
🛠️ Khuyến nghị: Nếu Watermark delay > 1 phút, cần tăng SU ngay lập tức (qua Azure portal > Scale > Streaming units).
📊 Giải thích tất cả các phương án
Dưới đây là phân tích từng lựa chọn, đánh dấu ✅ đúng hoặc ❌ sai, với lý do chi tiết dựa trên chức năng metric trong Azure Stream Analytics:
-
❌ Input Deserialization Errors
Metric này đếm số lỗi khi deserialize dữ liệu đầu vào (ví dụ: JSON không hợp lệ, schema sai).
Nó liên quan đến chất lượng dữ liệu input, không phải tài nguyên xử lý. Tăng load không gây lỗi này trừ khi dữ liệu lỗi, nên không phù hợp để monitor resources. -
❌ Late Input Events
Metric đếm số sự kiện đầu vào đến muộn (late events) so với watermark (out-of-order events).
Nó phản ánh vấn đề thứ tự dữ liệu từ nguồn (devices chậm), chứ không trực tiếp chỉ ra thiếu resources của job. Tăng load có thể gián tiếp tăng late events, nhưng không phải metric chính để check processing power. -
❌ Early Input Events
Metric đếm số sự kiện đầu vào đến sớm (early events) trước watermark dự kiến.
Tương tự Late Input Events, nó chỉ vấn đề timing dữ liệu nguồn, không liên quan đến backlog do thiếu CPU/SU. Không giúp dự đoán overload resources. -
✅ Watermark delay
Như đã giải thích ở trên: Metric lý tưởng để monitor overload, vì nó đo trực tiếp độ trễ xử lý toàn bộ pipeline.
📘 Tài liệu tham khảo
- Azure Docs chính thức: Monitor Azure Stream Analytics jobs (cập nhật 2025-2026, phần Metrics bao gồm Watermark Delay làm key indicator cho performance).
- Azure Monitor Metrics: Tìm "WatermarkDelaySeconds" trong namespace
Microsoft.StreamAnalytics/streamingjobs. - Best Practices: Scale Stream Analytics jobs – Nhấn mạnh Watermark delay để handle increased load.
🛠️ Lời khuyên từ Azure DBA: Luôn thiết lập Alert rules trên Watermark delay (>30s) qua Azure Monitor để tự động scale! Nếu cần hỗ trợ config, hãy cung cấp thêm chi tiết job.
V virtual machines.
Your new disaster recovery plan requires that all business-critical applications can be recovered to Azure.
You need to recommend a solution to fail over the database tier of App1 to Azure. The solution must provide the ability to test failover to Azure without affecting the current environment.
What should you include in the recommendation?
- A Azure Backup
- B Azure Information Protection
- C Windows Server Failover Cluster
- D Azure Site Recovery
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi mô tả một ứng dụng on-premises (chạy tại chỗ) có tên App1 với kiến trúc multi-tier (đa tầng), bao gồm:
- Web tier (tầng web),
- Application tier (tầng ứng dụng),
- Microsoft SQL Server tier (tầng cơ sở dữ liệu SQL Server).
Tất cả các tầng này chạy trên Hyper-V virtual machines (máy ảo Hyper-V).
Kế hoạch disaster recovery (DR) mới yêu cầu tất cả ứng dụng quan trọng có thể được khôi phục (recover) lên Azure.
Nhiệm vụ cụ thể: Khuyến nghị giải pháp để fail over (chuyển đổi dự phòng) tầng database (SQL Server) của App1 sang Azure, đồng thời hỗ trợ test failover mà không ảnh hưởng đến môi trường hiện tại (production environment).
🛠️ Yêu cầu chính của giải pháp:
- Hỗ trợ replication (sao chép) từ Hyper-V on-premises sang Azure.
- Cho phép test failover (kiểm tra chuyển đổi) trong môi trường cô lập, không gián đoạn production.
- Tập trung vào tầng database, nhưng phù hợp với toàn bộ app multi-tier.
📘 Dẫn nguồn: Tài liệu chính thức Microsoft Azure Site Recovery (cập nhật đến 2026): Azure Site Recovery overview và Support matrix for Hyper-V replication.
✅ Đáp án đúng: Azure Site Recovery
Lý do lựa chọn:
Azure Site Recovery (ASR) là dịch vụ disaster recovery chuyên dụng của Azure, hỗ trợ replicate VMs từ Hyper-V on-premises sang Azure một cách tự động và liên tục. Nó cho phép test failover bằng cách tạo môi trường cô lập (isolated network) ở Azure, kiểm tra toàn bộ app mà không ảnh hưởng production (không gây downtime). Sau test, có thể cleanup dễ dàng và tiếp tục replication.
ASR hỗ trợ SQL Server trên Hyper-V, crash-consistent replication, và tích hợp Azure SQL Database nếu cần migrate. Đây là giải pháp chuẩn cho failover hybrid (on-premises to Azure), cập nhật mới nhất (2026) vẫn duy trì hỗ trợ Hyper-V đầy đủ với RPO thấp (seconds).
📋 Giải thích tất cả các phương án
-
Azure Backup ❌
Sai vì: Azure Backup chỉ dùng để backup và restore dữ liệu (như file, VM snapshots), không hỗ trợ replication liên tục hay failover tự động. Không có tính năng test failover cô lập mà không ảnh hưởng production; restore thường yêu cầu downtime dài và không phù hợp cho multi-tier app real-time DR. -
Azure Information Protection ❌
Sai vì: Đây là dịch vụ bảo mật dữ liệu (data classification, labeling, encryption), tập trung vào protection thông tin nhạy cảm chứ không liên quan đến disaster recovery hay failover VMs. Không hỗ trợ replication Hyper-V sang Azure hay test failover. -
Windows Server Failover Cluster ❌
Sai vì: Đây là tính năng clustering on-premises của Windows Server để high availability (HA) trong cùng datacenter, không hỗ trợ failover cross-cloud (on-premises to Azure). Không có cơ chế replication tự động sang Azure hay test failover mà không ảnh hưởng production; chỉ phù hợp intra-site, không phải DR plan hybrid. -
Azure Site Recovery ✅
Đúng vì: Như đã giải thích ở trên, ASR là giải pháp lý tưởng cho replication Hyper-V to Azure, test failover không downtime, và full DR orchestration cho multi-tier apps bao gồm SQL Server. Hỗ trợ planned/unplanned failover với rollback dễ dàng.
You need to monitor SQL1 and query the metrics by using Kusto query language. The solution must minimize administrative effort.
Where should you store the metrics?
- A Azure Event Hubs
- B a Log Analytics workspace
- C Azure SQL Database
- D an Azure Blob storage container
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi tập trung vào việc giám sát (monitor) một instance SQL Server chạy trên Azure Virtual Machine (VM) có tên SQL1. Yêu cầu cụ thể là:
- Thu thập và lưu trữ metrics (chỉ số hiệu suất) từ SQL1.
- Truy vấn metrics bằng Kusto Query Language (KQL) – ngôn ngữ truy vấn mạnh mẽ được sử dụng trong Azure Monitor.
- Giải pháp phải giảm thiểu nỗ lực quản trị (minimize administrative effort), nghĩa là ưu tiên các dịch vụ tự động hóa cao, không cần cấu hình phức tạp thủ công.
📘 Bối cảnh kỹ thuật (cập nhật đến 2026): Với SQL Server trên Azure VM, Azure Monitor tự động thu thập metrics (như CPU, memory, disk I/O, SQL-specific metrics qua extensions). Metrics được lưu trữ ở nơi hỗ trợ KQL query trực tiếp mà không cần ETL (Extract-Transform-Load) thủ công. Đây là tính năng chuẩn của Azure Monitor (phiên bản mới nhất 2026 vẫn giữ nguyên, với cải tiến AI insights nhưng core storage không thay đổi).
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: a Log Analytics workspace
🛠️ Lý do:
- Log Analytics workspace là nơi Azure Monitor tự động lưu trữ metrics và logs từ Azure VM (bao gồm SQL Server insights).
- Bạn có thể truy vấn trực tiếp bằng KQL qua Azure portal, PowerShell, hoặc API mà không cần nỗ lực quản trị thêm (enable Azure Monitor agent hoặc VM insights extension là đủ, tự động route metrics vào workspace).
- Điều này phù hợp hoàn hảo với yêu cầu "minimize administrative effort" vì toàn bộ quy trình là managed service, hỗ trợ retention linh hoạt (30 ngày mặc định, lên đến 730 ngày), và tích hợp SQL-specific metrics qua "SQL Server on Azure VM monitoring".
- Theo docs Azure 2026: Metrics từ VM/SQL được convert thành logs trong Log Analytics để query KQL mượt mà.
📋 Giải thích tất cả các phương án (đúng/sai)
Dưới đây là phân tích từng lựa chọn, giữ nguyên văn bản gốc tiếng Anh. Mỗi phương án được đánh giá dựa trên khả năng lưu trữ metrics, hỗ trợ KQL query, và mức độ admin effort:
-
Azure Event Hubs ❌ Sai:
Event Hubs dùng để stream dữ liệu real-time (như logs/events), không phải lưu trữ metrics cho query KQL. Để query metrics từ đây, cần capture thủ công vào storage khác (như Blob), đòi hỏi effort cao (code custom Stream Analytics job). Không hỗ trợ KQL native, không phù hợp monitor VM/SQL. -
a Log Analytics workspace ✅ Đúng:
Như đã giải thích ở trên: Lưu trữ tự động metrics/logs từ Azure Monitor, query KQL trực tiếp, zero-effort sau enable extension. Lý tưởng cho SQL1 trên VM. -
Azure SQL Database ❌ Sai:
Azure SQL Database là managed relational DB, không thiết kế để lưu metrics (dùng cho app data). Để lưu metrics vào đây, cần ETL pipeline phức tạp (Azure Functions/Data Factory), không hỗ trợ KQL native (chỉ T-SQL), admin effort rất cao. Không phải nơi Azure Monitor route metrics mặc định. -
an Azure Blob storage container ❌ Sai:
Blob storage dùng lưu dữ liệu unstructured/raw (như JSON/CSV exports). Metrics có thể export thủ công qua Diagnostic Settings, nhưng không query KQL trực tiếp (cần Athena hoặc Data Explorer riêng), effort lớn (scripting, partitioning). Không minimize admin effort cho monitor real-time.
📚 Tài liệu tham khảo (cập nhật 2026)
- Azure Monitor documentation - Metrics in Log Analytics ✅ (Xác nhận metrics lưu trong Log Analytics cho KQL).
- Monitor SQL Server on Azure VMs 🛠️ (Hướng dẫn enable insights với minimal config).
- Kusto Query Language (KQL) overview 📘 (Chỉ hỗ trợ native trong Log Analytics/Data Explorer).
Hy vọng phân tích này giúp bạn nắm vững! Nếu cần demo KQL query mẫu, hãy hỏi thêm nhé! 🚀
✑ Send the output to an Azure Synapse.
✑ Identify spikes and dips in time series data.
✑ Minimize development and configuration effort.
Which should you include in the solution?
- A Azure SQL Database
- B Azure Databricks
- C Azure Stream Analytics
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi yêu cầu thiết kế một giải pháp phát hiện bất thường (anomaly detection) cho dữ liệu streaming từ Azure IoT Hub. Các yêu cầu cụ thể bao gồm:
- 📤 Gửi đầu ra (output) đến Azure Synapse (một nền tảng phân tích dữ liệu lớn).
- 🔍 Phát hiện spikes (đột biến tăng) và dips (đột biến giảm) trong dữ liệu chuỗi thời gian (time series data).
- ⚡ Tối thiểu hóa nỗ lực phát triển và cấu hình (minimize development and configuration effort), nghĩa là ưu tiên giải pháp sẵn có, dễ triển khai mà không cần code phức tạp.
Mục tiêu chính: Chọn dịch vụ Azure phù hợp nhất để xử lý streaming data từ IoT Hub, tích hợp anomaly detection cho time series, output đến Synapse, và dễ sử dụng nhất. 🛠️
✅ Đáp án đúng: Azure Stream Analytics
Lý do lựa chọn:
- Azure Stream Analytics là dịch vụ serverless chuyên xử lý dữ liệu streaming thời gian thực, tích hợp trực tiếp với Azure IoT Hub làm nguồn input.
- Nó có built-in functions cho anomaly detection trên time series, như
AnomalyPoint()để phát hiện spikes/dips một cách tự động mà không cần code phức tạp ✅. - Hỗ trợ output trực tiếp đến Azure Synapse Analytics (qua sink Synapse) với cấu hình đơn giản chỉ vài cú click.
- Tối ưu effort: Query ngôn ngữ SQL-like quen thuộc, triển khai nhanh (minutes), không cần quản lý infrastructure. Phù hợp hoàn hảo với tất cả yêu cầu! 🚀
📋 Giải thích tất cả các phương án
-
Azure SQL Database ❌
Sai vì: Đây là cơ sở dữ liệu quan hệ (relational DB) truyền thống, không hỗ trợ xử lý streaming data thời gian thực từ IoT Hub. Nó thiếu built-in anomaly detection cho time series (phải tự code bằng T-SQL hoặc ML bên ngoài), và output đến Synapse yêu cầu ETL phức tạp. Effort cao, không phù hợp streaming! 😞 -
Azure Databricks ❌
Sai vì: Là nền tảng big data dựa trên Spark, mạnh cho batch/ML nhưng yêu cầu phát triển code phức tạp (Scala/Python notebooks) để xử lý streaming từ IoT Hub. Anomaly detection cần tự implement (qua MLlib hoặc custom algo), output đến Synapse khả thi nhưng cấu hình nhiều bước. Không minimize effort như yêu cầu! 🕒 -
Azure Stream Analytics ✅
Đúng vì: Như đã giải thích ở trên, dịch vụ lý tưởng cho streaming IoT, anomaly detection native (hỗ trợ spikes/dips qua functions thời gian thực), output Synapse dễ dàng, và zero-code heavy với giao diện query SQL. Cập nhật 2026: Vẫn là lựa chọn hàng đầu theo docs Azure mới nhất! 🌟
📘 Tài liệu tham khảo
- Azure Stream Analytics - Anomaly Detection (built-in cho time series spikes/dips).
- Azure Stream Analytics Output to Synapse.
- IoT Hub + Stream Analytics Integration (cập nhật 2024-2026, serverless focus).
- Azure Docs chính thức (phiên bản mới nhất 2026): Xác nhận Stream Analytics là giải pháp low-effort cho anomaly streaming. 🔗
In each database, you create a user for an Azure Active Directory (Azure AD) user named User1.
User1 attempts to connect to the logical server by using Azure Data Studio and receives a login error.
You need to ensure that when User1 connects to the logical server by using Azure Data Studio, User1 can see all the databases.
What should you do?
- A Create User1 in the master database.
- B Assign User1 the db_datareader role for the master database.
- C Assign User1 the db_datareader role for the databases that User1 creates.
- D Grant SELECT on sys.databases to public in the master database.
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi xoay quanh tình huống quản trị Azure SQL Database:
Bạn đã tạo 5 instances Azure SQL Database trên cùng một logical server. Trong mỗi database riêng lẻ, bạn đã tạo một user dành cho Azure Active Directory (Azure AD) user tên là User1.
Tuy nhiên, khi User1 cố gắng kết nối đến logical server bằng Azure Data Studio, người dùng này gặp lỗi login và không thể thấy danh sách tất cả các databases.
Mục tiêu: Đảm bảo User1 có thể kết nối thành công đến logical server qua Azure Data Studio và xem được tất cả các databases trên server đó.
🛠️ Lưu ý kỹ thuật quan trọng (dựa trên kiến thức Azure SQL mới nhất đến 2026):
- Azure SQL Database sử dụng logical server làm điểm kết nối chính. Để liệt kê databases (qua sys.databases), user phải authenticate tại mức server (master database).
- User chỉ tồn tại trong user databases không cho phép kết nối server-level hoặc liệt kê databases.
- Authentication với Azure AD yêu cầu CREATE USER ở đúng context (master hoặc user DB).
📘 Tài liệu tham khảo:
- Microsoft Docs: Azure SQL Authentication with Azure AD (cập nhật 2024-2026).
- Azure SQL Server-level Principals (hướng dẫn tạo user trong master DB).
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Create User1 in the master database.
Lý do:
- Để User1 kết nối đến logical server và liệt kê tất cả databases (qua sys.databases trong Azure Data Studio), cần tạo user cho User1 ngay trong master database.
- Master database quản lý server-level access. User trong master cho phép login vào server và query sys.databases mà không cần quyền đọc cụ thể.
- Sau khi tạo user trong master, User1 có thể kết nối server và thấy danh sách DBs (vì sys.databases là view public ở master). User vẫn cần quyền riêng trong từng user DB để truy cập dữ liệu bên trong.
- Đây là cách chuẩn và đơn giản nhất theo best practice Azure SQL (không cần role bổ sung).
📋 Giải thích tất cả các phương án (đúng/sai)
-
✅ Create User1 in the master database.
Đúng vì: Như giải thích ở trên, đây là bước cần thiết để User1 authenticate tại server-level. Sau lệnhCREATE USER [User1] FROM EXTERNAL PROVIDERtrong master DB, User1 có thể connect server và querySELECT name FROM sys.databasesđể thấy tất cả DBs. Không làm bước này, login sẽ fail vì server không nhận diện User1. -
❌ Assign User1 the db_datareader role for the master database.
Sai vì: Giả sử User1 đã tồn tại trong master (nhưng câu hỏi không có), việc assigndb_datareaderchỉ cho phép đọc dữ liệu trong master DB (như system views). Tuy nhiên, login error xảy ra trước khi assign role, do User1 chưa được tạo trong master. Role này không giải quyết vấn đề kết nối server và liệt kê DBs một cách đầy đủ. -
❌ Assign User1 the db_datareader role for the databases that User1 creates.
Sai vì: User1 chỉ có quyền db_datareader trong các user databases riêng lẻ (những DB đã tạo user), không ảnh hưởng đến kết nối server-level. db_datareader chỉ hoạt động sau khi connect trực tiếp vào DB cụ thể, không giúp liệt kê sys.databases từ server. Vấn đề gốc là login server fail. -
❌ Grant SELECT on sys.databases to public in the master database.
Sai vì:sys.databaseslà public view trong master, ai connect được server đều đọc được mà không cần grant SELECT. Grant này thừa và không giải quyết login error (User1 chưa tồn tại trong master). Public role không giúp authenticate Azure AD user.
🧩 Kết luận: Chỉ cần tạo User1 trong master database là đủ để User1 connect và thấy tất cả DBs qua Azure Data Studio! Nếu áp dụng, test bằng connection string server-level. 🚀
Users report slow performance when they run commonly used queries. Users do not report performance changes for infrequently used queries.
You need to monitor resource utilization to determine the source of the performance issues.
Which metric should you monitor?
- A Local tempdb percentage
- B DWU percentage
- C Data Warehouse Units (DWU) used
- D Cache hit percentage
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi tập trung vào việc quản lý hiệu suất (performance) của một enterprise data warehouse trong Azure Synapse Analytics (trước đây gọi là Azure SQL Data Warehouse).
-
Tình huống vấn đề: Người dùng báo cáo rằng các truy vấn thường được sử dụng (commonly used queries) chạy chậm, nhưng các truy vấn ít sử dụng (infrequently used queries) không có thay đổi về hiệu suất. Điều này gợi ý vấn đề không phải ở tài nguyên tổng thể (như CPU/memory), mà liên quan đến cơ chế cache – vì query thường dùng lẽ ra phải được tối ưu hóa bởi cache, nhưng lại chậm hơn.
-
Yêu cầu: Cần giám sát (monitor) một metric cụ thể về resource utilization để xác định nguồn gốc vấn đề performance.
🛠️ Mục tiêu chính: Tìm metric giúp chẩn đoán tại sao query phổ biến bị chậm, trong khi query hiếm dùng vẫn ổn. Đây là vấn đề điển hình của cache inefficiency trong Synapse Analytics, nơi dữ liệu được cache ở columnstore index để tăng tốc query lặp lại.
📘 Kiến thức cập nhật (đến 2026): Theo tài liệu Microsoft Azure Synapse Analytics mới nhất (phiên bản Gen2, tích hợp Azure Monitor và Query Store), metric liên quan đến cache là chìa khóa cho workload analytics. Synapse sử dụng Result Set Caching và Adaptive Cache để tối ưu query thường dùng (xem Microsoft Docs: Monitor query performance và Synapse Metrics Reference).
✅ Đáp án đúng: Cache hit percentage
Lý do lựa chọn:
- Metric Cache hit percentage đo lường tỷ lệ phần trăm truy vấn hit (trúng) cache, nghĩa là dữ liệu được lấy từ bộ nhớ cache thay vì đọc từ disk/storage.
- Trong trường hợp này, query thường dùng chậm cho thấy cache hit thấp (nhiều miss), có thể do cache bị evict (xóa) bởi workload khác, dữ liệu thay đổi thường xuyên, hoặc cấu hình cache không phù hợp. Ngược lại, query ít dùng không bị ảnh hưởng vì chúng không phụ thuộc cache (chạy cold từ đầu).
- Giám sát metric này giúp xác định chính xác nguồn vấn đề: cache utilization kém, từ đó áp dụng giải pháp như tăng DWU, enable Result Set Caching, hoặc Materialized Views.
- ✅ Hoàn hảo khớp với symptom: Performance chậm chỉ ở hot queries → Cache issue!
📋 Giải thích tất cả các phương án
-
❌ Local tempdb percentage
Sai vì: Metric này đo mức sử dụng tempdb local trên mỗi distribution (dùng cho spilling khi query vượt memory). Nó phù hợp cho vấn đề tempdb overflow ở query phức tạp với sort/join lớn, nhưng không giải thích tại sao chỉ query thường dùng chậm (tempdb ảnh hưởng tất cả query lớn, không phân biệt tần suất). Không phải nguồn gốc chính ở đây. -
❌ DWU percentage
Sai vì: Đây là tỷ lệ sử dụng DWU tổng thể (CPU + Memory + I/O normalized). Nó chỉ ra utilization cao của pool, nhưng nếu cao thì tất cả query (thường dùng lẫn ít dùng) đều chậm – trái với symptom. Metric này quá tổng quát, không pinpoint cache-specific issue. -
❌ Data Warehouse Units (DWU) used
Sai vì: Metric đo số lượng DWU đã consume (tương tự DWU percentage, theo thời gian). Nó hữu ích cho cost monitoring hoặc scaling, nhưng không chẩn đoán tại sao hot query chậm (vì query ít dùng ổn định, nghĩa là không phải overload tổng thể). Quá chung chung! -
✅ Cache hit percentage
(Đã giải thích chi tiết ở trên – metric chính xác nhất cho vấn đề cache hit/miss ở workload thường xuyên).
🛠️ Khuyến nghị thực tế: Sử dụng Azure Monitor hoặc Synapse Studio > Monitor > Metrics để track "CacheHitPercentage". Nếu <90%, scale up Gen2 pool hoặc dùng Automatic Scaling. Tham khảo thêm: Azure Synapse Performance Tuning (cập nhật 2025-2026).