Ngân hàng đề — Microsoft Azure Database Administrator

Tìm thấy 217 câu.

Câu 171
You need to recommend a disaster recovery solution for an on-premises Microsoft SQL Server database. The solution must meet the following requirements:

•Support real-time data replication to a different geographic region.
•Use Azure as a disaster recovery target.
•Minimize costs and administrative effort.

What should you include in the recommendation?
  1. A database mirroring on an instance of SQL Server on Azure Virtual Machines
  2. B availability groups for SQL Server on Azure Virtual Machines
  3. C an Azure SQL Managed Instance link
  4. D transactional replication to an Azure SQL Managed Instance
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 đề xuất giải pháp khôi phục thảm họa (Disaster Recovery - DR) cho một cơ sở dữ liệu Microsoft SQL Server on-premises. Các yêu cầu cụ thể bao gồm:
✅ Hỗ trợ sao chép dữ liệu thời gian thực (real-time data replication) đến một khu vực địa lý khác (different geographic region).
✅ Sử dụng Azure làm mục tiêu khôi phục thảm họa (Azure as DR target).
✅ Giảm thiểu chi phí và nỗ lực quản trị (minimize costs and administrative effort).

🛠️ Bối cảnh chính: Đây là tình huống di chuyển/DR từ môi trường on-premises SQL Server sang Azure, tập trung vào tính sẵn sàng cao (high availability) với sao chép dữ liệu gần như thời gian thực, chi phí thấp và dễ quản lý. Giải pháp phải tận dụng các tính năng native của SQL Server và Azure để tránh phức tạp hóa hạ tầng.

✅ Đáp án đúng: transactional replication to an Azure SQL Managed Instance

Lý do lựa chọn:
Transactional replication là giải pháp tối ưu nhất vì:

  • Real-time replication: Sao chép dữ liệu gần thời gian thực (near real-time, latency thấp ~ vài giây) từ on-premises SQL Server đến Azure SQL Managed Instance ở vùng địa lý khác, hỗ trợ failover nhanh.
  • Azure làm target: Azure SQL Managed Instance (MI) hỗ trợ đầy đủ làm subscriber cho transactional replication từ on-premises.
  • Minimize costs & admin effort: Không cần VM tự quản (IaaS), chi phí thấp hơn (PaaS), cấu hình đơn giản qua SQL Server Management Studio (SSMS), không yêu cầu Always On hay clustering phức tạp. Tính năng này được cập nhật ổn định đến 2026 (SQL Server 2022+ và Azure SQL MI Global).

📘 Tài liệu tham khảo:

📋 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 một cách chi tiết, 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 (real-time, Azure target, low cost/effort). Kiến thức dựa trên phiên bản mới nhất Azure/SQL Server 2022-2026.

  • ❌ database mirroring on an instance of SQL Server on Azure Virtual Machines
    Phân tích sai: Database mirroring đã bị deprecated (không khuyến khích từ SQL Server 2016) và không hỗ trợ real-time cross-region hiệu quả mà không cần cấu hình phức tạp. Yêu cầu triển khai SQL Server trên Azure VMs (IaaS), dẫn đến chi phí cao (VM + storage) và nỗ lực quản trị lớn (patching, HA setup). Không phù hợp minimize costs/admin effort, và không native với Azure PaaS.

  • ❌ availability groups for SQL Server on Azure Virtual Machines
    Phân tích sai: Always On Availability Groups (AG) hỗ trợ synchronous replication cross-region, nhưng yêu cầu SQL Server trên Azure VMs (IaaS) với WSFC clustering, chi phí rất cao (nhiều VMs, premium storage, licenses). Nỗ lực quản trị lớn (setup listener, quorum), không phải giải pháp low-effort. Phù hợp HA nội bộ hơn DR geo với on-premises.

  • ❌ an Azure SQL Managed Instance link
    Phân tích sai: Azure SQL Managed Instance Link (MI Link) là tính năng cross-database replication giữa các MI instances (không hỗ trợ trực tiếp từ on-premises SQL Server). Không đáp ứng real-time replication từ on-prem, và tập trung vào liên kết dữ liệu nội bộ Azure, tăng chi phí không cần thiết mà không minimize admin effort cho DR scenario.

Tóm lại, transactional replication là lựa chọn duy nhất cân bằng hoàn hảo giữa yêu cầu! 🚀 Nếu cần triển khai thực tế, tôi khuyên test PoC trên Azure portal.

Câu 172
You have an Azure subscription that contains an instance of SQL Server on an Azure virtual machine named VM1 and an Azure Active Directory Domain Services (Azure AD DS) domain that contains two users named User1 and User 2.

On the default instance of SQL Server on VM1, you create a credential named Credential1 for User1.

You need to ensure that User2 can create a SQL Server Agent proxy that will use Credential1. The solution must use the principle of least privilege.

Which role should you assign to User2?
  1. A SQLAgentUserRole
  2. B SQLAgentReaderRole
  3. C SQLAgentOperatorRole
  4. D sysadmin
Xem giải thích

🧩 Phân tích chi tiết câu hỏi

Câu hỏi này thuộc chủ đề quản lý SQL Server Agent trên Azure Virtual Machine (VM) trong Azure subscription. Cụ thể:

  • Bạn có một Azure subscription chứa VM1 chạy instance SQL Server (mặc định).
  • Có Azure AD DS (Azure Active Directory Domain Services) với hai user: User1 và User2.
  • Trên SQL Server instance của VM1, bạn đã tạo credential tên Credential1 dành cho User1 (credential này dùng để xác thực khi chạy job, ví dụ với proxy).
  • Yêu cầu: Đảm bảo User2 có thể tạo SQL Server Agent proxy sử dụng chính Credential1, và phải tuân thủ nguyên tắc least privilege (quyền hạn tối thiểu cần thiết).
  • Mục tiêu: Gán role phù hợp cho User2 để thực hiện việc này.

📘 Ngữ cảnh kỹ thuật (cập nhật theo SQL Server 2022 và Azure SQL VM mới nhất đến 2026):

  • SQL Server Agent proxy là cơ chế cho phép job chạy dưới quyền của một credential (thay vì SQL Agent service account).
  • Việc tạo proxy sử dụng sp_add_proxy (stored procedure server-level trong msdb database).
  • Credential1 đã tồn tại và thuộc User1, nhưng User2 cần quyền tạo proxy gắn với credential đó.
  • Least privilege: Ưu tiên quyền thấp nhất nhưng đủ chức năng, tránh cấp sysadmin nếu có thể (nhưng thực tế SQL Server yêu cầu nghiêm ngặt).

✅ Đáp án đúng: sysadmin
Lý do lựa chọn (bằng tiếng Việt):
Để User2 tạo SQL Server Agent proxy sử dụng Credential1, User2 phải là thành viên của fixed server role sysadmin. Đây là yêu cầu bắt buộc từ Microsoft, vì sp_add_proxy chỉ cho phép sysadmin thực thi. Các database role trong msdb (như SQLAgentUserRole) chỉ hỗ trợ sử dụng proxy (để chạy job), không phải tạo proxy. Mặc dù sysadmin là quyền cao (không lý tưởng cho least privilege), nhưng đó là quyền tối thiểu theo thiết kế SQL Server – không có role thấp hơn nào thay thế được. User2 cần login vào SQL Server qua Azure AD DS trước, rồi gán role này.

🛠️ 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 giữ nguyên văn bản gốc tiếng Anh, với lý do đúng/sai bằng tiếng Việt. Các role này là fixed database roles trong msdb database của SQL Server Agent (không phải server role).

  • ❌ SQLAgentUserRole
    Sai vì: Role này chỉ cho phép user sử dụng proxy mà họ sở hữu để chạy job của riêng họ. User2 không thể tạo proxy mới (kể cả dùng Credential1), vì không có quyền server-level để gọi sp_add_proxy. Phù hợp cho end-user chạy job cá nhân, không phải admin proxy. (Least privilege thấp, nhưng thiếu chức năng cần thiết).

  • ❌ SQLAgentReaderRole
    Sai vì: Role này chỉ cấp quyền xem thông tin về tất cả job, schedule, operator và proxy (read-only). User2 có thể đọc về Credential1 hoặc proxy hiện có, nhưng không thể tạo proxy mới. Đây là quyền giám sát tối thiểu, không hỗ trợ hành động tạo/sửa.

  • ❌ SQLAgentOperatorRole
    Sai vì: Role này cho phép xem, chạy, dừng job của người khác, và quản lý một số operator/schedule, nhưng không cấp quyền tạo proxy. User2 vẫn không thể sử dụng sp_add_proxy với Credential1. Phù hợp cho operator quản lý job runtime, không phải setup proxy.

  • ✅ sysadmin
    Đúng vì: Đây là fixed server role (server-level, không phải msdb database role), cho phép tạo, sửa, xóa proxy bằng sp_add_proxy và gắn Credential1. User2 sau khi có role này có thể thực hiện yêu cầu ngay lập tức. Mặc dù quyền cao (toàn quyền server), nhưng là yêu cầu bắt buộc duy nhất từ SQL Server – không có quyền thấp hơn thay thế. Để áp dụng least privilege thực tế: Gán role tạm thời, sau đó revoke.

📘 Tài liệu tham khảo (cập nhật 2026)

🛡️ Lưu ý từ Azure DBA: Trong môi trường Azure VM, hãy dùng Azure AD authentication cho User2, và monitor qua Azure Security Center để tránh lạm dụng sysadmin. Nếu cần granular hơn, xem xét custom server role (nhưng SQL Server không hỗ trợ thay thế sysadmin cho proxy creation).

Câu 173
You have the following resources:

•15 SQL Server on Azure Virtual Machines instances
•20 Azure SQL databases

You need to recommend a solution to centrally monitor the resources for security vulnerabilities.

What should you include in the recommendation?
  1. A database audits
  2. B Microsoft Defender
  3. C SQL insights
  4. D Azure SQL Auditing
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 khuyến nghị giải pháp giám sát tập trung (centrally monitor) các tài nguyên cơ sở dữ liệu trên Azure để phát hiện lỗ hổng bảo mật (security vulnerabilities). Các tài nguyên cụ thể bao gồm:

  • 15 instances SQL Server chạy trên Azure Virtual Machines (VMs): Đây là các máy ảo Azure cài đặt SQL Server, không phải dịch vụ PaaS thuần túy.
  • 20 Azure SQL databases: Đây là dịch vụ cơ sở dữ liệu quản lý (PaaS) trên Azure.

Yêu cầu chính là tìm giải pháp tập trung (centralized), có khả năng quét và giám sát lỗ hổng bảo mật cho cả hai loại tài nguyên này một cách thống nhất, không phải chỉ auditing hoạt động hay hiệu suất. Giải pháp phải hỗ trợ phiên bản mới nhất của Azure (cập nhật đến 2026), nơi Microsoft Defender for SQL (trong Microsoft Defender for Cloud) là lựa chọn tối ưu cho việc quét lỗ hổng tự động, đánh giá rủi ro và phát hiện mối đe dọa. 📘

✅ Đáp án đúng: Microsoft Defender

Lý do lựa chọn:

  • Microsoft Defender (cụ thể là Microsoft Defender for SQL, tích hợp trong Microsoft Defender for Cloud) cung cấp khả năng giám sát tập trung toàn diện cho cả SQL Server trên Azure VMs và Azure SQL Databases.
  • Nó bao gồm các tính năng như Vulnerability Assessment (quét lỗ hổng tự động), Advanced Threat Protection (phát hiện mối đe dọa nâng cao), và dashboard tập trung để theo dõi tất cả tài nguyên từ một nơi duy nhất.
  • Phù hợp hoàn hảo vì hỗ trợ cả IaaS (VMs) và PaaS (Azure SQL), với cập nhật mới nhất năm 2026 tích hợp AI để phát hiện zero-day vulnerabilities.
  • 🛠️ Đây là giải pháp khuyến nghị chính thức từ Microsoft cho hybrid/multi-cloud security monitoring.

Nguồn tham khảo:

📋 Giải thích tất cả các phương án (đúng và sai)

  • database audits ❌
    Phân tích sai: Phương án này chỉ ghi log các hoạt động cơ sở dữ liệu (như truy vấn, login), không phải giám sát lỗ hổng bảo mật. Nó không tập trung, không quét vulnerabilities, và không hỗ trợ VMs một cách thống nhất. Chỉ phù hợp cho compliance auditing, không phải security scanning.

  • Microsoft Defender ✅
    Phân tích đúng: Như đã giải thích ở trên, đây là giải pháp lý tưởng với khả năng quét lỗ hổng tập trung cho cả VMs và Azure SQL, tích hợp dashboard duy nhất. Hỗ trợ cập nhật real-time đến 2026 với tích hợp Microsoft Purview.

  • SQL insights ❌
    Phân tích sai: SQL Insights (trong Azure Monitor) tập trung vào hiệu suất và query performance (như CPU, I/O), không phải bảo mật hay vulnerabilities. Nó thiếu khả năng quét lỗ hổng và không hỗ trợ VMs đầy đủ.

  • Azure SQL Auditing ❌
    Phân tích sai: Chỉ áp dụng cho Azure SQL Databases (PaaS), ghi log hoạt động để audit, nhưng không hỗ trợ SQL Server trên VMs và không quét vulnerabilities (chỉ auditing events). Không phải giải pháp tập trung cho security scanning.

🛠️ Kết luận khuyến nghị: Triển khai Microsoft Defender for SQL qua Azure Portal để enable nhanh chóng, chi phí theo pay-as-you-go, đảm bảo tuân thủ các chuẩn bảo mật mới nhất 2026! 🚀

Câu 174
You have an Azure subscription.

You need to deploy two instances of SQL Server on Azure virtual machines in a highly available configuration that will use an Always On availability group. The solution must meet the following requirements:

•Minimize how long it takes to fail over.
•Maintain existing connections to the primary replica during a failover.

What should you do?
  1. A Connect each virtual machine to a different subnet on a virtual network. Deploy a basic Azure load balancer.
  2. B Connect each virtual machine to a different subnet on a single virtual network.
  3. C Connect each virtual machine to a single subnet on a single virtual network.
  4. D Connect each virtual machine to a single subnet on a virtual network. Deploy a standard Azure load balancer.
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

✅ Tóm tắt câu hỏi: Câu hỏi yêu cầu triển khai hai instance SQL Server trên Azure Virtual Machines (VMs) trong cấu hình highly available (HA) sử dụng Always On Availability Group (AG). Mục tiêu chính là:

  • Giảm thiểu thời gian failover (minimize failover time): Đảm bảo quá trình chuyển đổi primary replica sang secondary replica diễn ra nhanh nhất có thể (thường chỉ vài giây với automatic failover ở chế độ synchronous commit).
  • Duy trì kết nối hiện tại đến primary replica trong quá trình failover (maintain existing connections): Sử dụng AG listener kết hợp Azure Load Balancer để client applications có thể reconnect transparent mà không bị drop kết nối đột ngột (nhờ health probes và IP floating).

🛠️ Yêu cầu kỹ thuật cốt lõi cho Always On AG trên Azure VMs (dựa trên best practices Microsoft, cập nhật 2024-2026):

  • Các VM phải ở cùng Virtual Network (VNet) để giao tiếp cluster (Windows Server Failover Cluster - WSFC).
  • Sử dụng Azure Load Balancer (Standard hoặc Basic SKU) cho AG listener với static IP.
  • Same subnet ưu tiên để giảm latency replication traffic (quan trọng cho fast failover), hỗ trợ Basic LB, và đơn giản hóa config.
  • Nếu different subnet: Phải dùng Standard LB (hỗ trợ cross-subnet/multi-zone), nhưng latency cao hơn → failover chậm hơn.
  • Không đề cập Availability Zones/Set → giả định single zone, ưu tiên low latency.

📘 Tài liệu tham khảo:

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Connect each virtual machine to a single subnet on a single virtual network.

Lý do 🏆:

  • Giảm thiểu thời gian failover ⚡: Các VM ở cùng subnet & cùng VNet đảm bảo latency mạng thấp nhất cho synchronous replication (mirroring data giữa primary/secondary), WSFC heartbeat, và health probes → automatic failover chỉ mất ~5-15 giây.
  • Duy trì kết nối 🔗: Cho phép deploy Basic Azure Load Balancer (phù hợp same subnet) cho AG listener → IP frontend "float" nhanh chóng từ primary sang secondary qua probes (interval 5s), client reconnect seamless mà không drop toàn bộ sessions (app chỉ cần retry ngắn).
  • Đây là best practice đơn giản nhất cho HA AG (không cần config phức tạp cross-subnet), phù hợp yêu cầu "highly available configuration" mà không chỉ định zones/multi-subnet.

❌ Giải thích tất cả các phương án

🧩 Phương án A (SAI): Connect each virtual machine to a different subnet on a virtual network. Deploy a basic Azure load balancer.
Giải thích sai ❌: Basic Load Balancer KHÔNG hỗ trợ cross-subnet (backend pool chỉ same subnet) → Không thể deploy listener. Latency cao hơn → Failover chậm, không maintain connections tốt. Vi phạm quy tắc LB SKU.

🧩 Phương án B (SAI): Connect each virtual machine to a different subnet on a single virtual network.
Giải thích sai ❌: Different subnet → Latency replication cao (routing giữa subnets) → Sync chậm, failover lâu hơn (không minimize time). Cần Standard LB cho listener (không đề cập) → Không đảm bảo maintain connections seamless. Phù hợp multi-zone nhưng không optimal cho yêu cầu.

🧩 Phương án C (ĐÚNG): Connect each virtual machine to a single subnet on a single virtual network.
Giải thích đúng ✅: Same subnet & VNet → Latency thấp, WSFC ổn định, hỗ trợ Basic LB cho listener → Failover siêu nhanh (~giây), connections maintained qua IP floating & probes. Config chuẩn theo Microsoft tutorial (low complexity, high performance).

🧩 Phương án D (SAI): Connect each virtual machine to a single subnet on a virtual network. Deploy a standard Azure load balancer.
Giải thích sai ❌: Standard LB thừa thãi cho same subnet (Basic LB đủ & rẻ hơn, probes tương đương). Không cải thiện failover time thêm (vẫn same subnet), nhưng thêm complexity (HA Ports chỉ cần cho cross-subnet/cluster ports). Không phải lựa chọn tối ưu/minimal để "minimize failover" so với C.

Kết luận 🚀: Chọn C để đạt HA tối ưu với Always On AG trên Azure VMs theo phiên bản mới nhất (SQL Server 2022+, Azure 2026). Nếu cần multi-zone, nâng cấp sang different subnet + Standard LB.

Câu 175 Chọn nhiều đáp án
You have an Azure SQL Database elastic pool that contains 10 databases.

You receive the following alert.

Msg 1132, Level 16, state 1, Line 1
The elastic pool has reached its storage limit. The storage used for the elastic pool cannot exceed (76800) MBs.

You need to resolve the alert. The solution must minimize administrative effort.

Which three actions can you perform? Each correct answer presents a complete solution.

NOTE: Each correct selection is worth one point.
  1. A Increase the maximum storage of the elastic pool.
  2. B Delete data from a database.
  3. C Remove a database from the pool.
  4. D Enable data compression.
  5. E Shrink individual databases.
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 mô tả tình huống bạn đang quản lý một Azure SQL Database elastic pool chứa 10 cơ sở dữ liệu (databases). Elastic pool là một tính năng của Azure SQL Database cho phép chia sẻ tài nguyên (CPU, IO, storage) giữa nhiều DB để tối ưu chi phí.

Bạn nhận được alert lỗi sau:
Msg 1132, Level 16, state 1, Line 1 The elastic pool has reached its storage limit. The storage used for the elastic pool cannot exceed (76800) MBs.

Điều này có nghĩa là tổng dung lượng lưu trữ (storage) sử dụng của toàn elastic pool đã đạt giới hạn tối đa 76.8 GB (76800 MB). Storage ở đây là tổng hợp từ tất cả các DB trong pool, bao gồm cả dữ liệu đã phân bổ (allocated space).

Yêu cầu giải quyết: Bạn cần khắc phục alert này với giải pháp giảm thiểu nỗ lực quản trị (minimize administrative effort). Câu hỏi là loại đa lựa chọn (multiple correct), chọn ba hành động có thể thực hiện, mỗi lựa chọn đúng đáng 1 điểm.

Mục tiêu chính: Giảm storage used hoặc tăng storage limit của pool mà không cần can thiệp sâu (như xóa dữ liệu thủ công hoặc rebuild lớn).

✅ Đáp án đúng (ba lựa chọn):

  • Increase the maximum storage of the elastic pool.
  • Remove a database from the pool.
  • Shrink individual databases.

🛠️ Lý do chọn các đáp án đúng:
Những hành động này trực tiếp và nhanh chóng giải quyết vấn đề storage limit của elastic pool mà không đòi hỏi nỗ lực quản trị cao:

  • Tăng giới hạn storage pool qua Azure Portal/CLI/PowerShell (chỉ vài cú click).
  • Loại bỏ DB khỏi pool (move sang standalone hoặc pool khác), giảm ngay tổng storage used.
  • Thu hẹp (shrink) từng DB riêng lẻ để reclaim không gian unused, cập nhật tổng storage pool ngay lập tức.
    Dựa trên tài liệu Azure SQL mới nhất (2024-2026), elastic pool storage được tính tổng từ tất cả DB, và các hành động này được khuyến nghị chính thức để resolve limit mà minimize effort.

📋 Giải thích chi tiết từng phương án (sử dụng kiến thức Azure SQL cập nhật 2026)

  • Increase the maximum storage of the elastic pool.
    ✅ Đúng. Hành động này tăng giới hạn storage tối đa của pool (ví dụ từ 76.8 GB lên cao hơn qua Azure Portal > Elastic pool > Compute + storage > Storage). Giải quyết ngay alert mà effort thấp nhất (scale-up storage chỉ mất vài phút). Không ảnh hưởng dữ liệu hiện tại.

  • Delete data from a database.
    ❌ Sai. Việc xóa dữ liệu từ một DB có thể giảm storage used, nhưng đòi hỏi effort cao: phải query phân tích dữ liệu thừa, viết script DELETE/TRUNCATE, xử lý transaction log, và verify. Không phải giải pháp "minimize administrative effort" vì tốn thời gian và rủi ro mất dữ liệu.

  • Remove a database from the pool.
    ✅ Đúng. Loại bỏ một DB khỏi pool (sử dụng ALTER DATABASE ... REMOVE FROM elastic pool) sẽ giảm ngay tổng storage used của pool, vì storage DB đó không còn tính vào pool limit. DB có thể move sang pool khác hoặc standalone. Effort thấp, chỉ cần Azure Portal/TSQL, phù hợp tình huống 10 DB.

  • Enable data compression.
    ❌ Sai. Bật compression (ROW/PAGE cho table/index) giảm kích thước dữ liệu tương lai, nhưng không giải quyết ngay storage limit vì cần ALTER INDEX REBUILD (tốn CPU/IO cao, thời gian dài với DB lớn). Effort quản trị lớn, không minimize, và storage allocated không giảm tức thì.

  • Shrink individual databases.
    ✅ Đúng. Sử dụng DBCC SHRINKFILE hoặc DBCC SHRINKDATABASE trên từng DB để thu hẹp file dữ liệu/log, reclaim unused space, từ đó giảm tổng storage used của pool ngay lập tức. Effort thấp (chạy T-SQL trên từng DB), được Microsoft khuyến nghị cho elastic pool overload. Lưu ý: Tránh lạm dụng vì có thể fragment, nhưng phù hợp resolve alert nhanh.

📚 Tài liệu tham khảo (cập nhật mới nhất 2026):

Hy vọng phân tích này giúp bạn nắm vững! 🚀

Câu 176
You have an Azure SQL database.

You need to implement a disaster recovery solution that meets the following requirements:

•Minimizes how long it takes to recover the database if a datacenter fails
•Minimizes administrative effort

What should you include in the solution?
  1. A Azure Site Recovery
  2. B active geo-replication
  3. C auto-failover groups
  4. D Azure Backup
Xem giải thích

🧩 Giải thích nội dung câu hỏi

Câu hỏi tập trung vào việc triển khai giải pháp khôi phục thảm họa (disaster recovery - DR) cho một cơ sở dữ liệu Azure SQL Database. Các yêu cầu chính là:
✅ Giảm thiểu thời gian khôi phục (Recovery Time Objective - RTO thấp) khi trung tâm dữ liệu (datacenter) gặp sự cố.
✅ Giảm thiểu nỗ lực quản trị (administrative effort thấp), nghĩa là giải pháp phải tự động hóa cao, không yêu cầu can thiệp thủ công nhiều.

Đây là tình huống thực tế trong Azure, nơi cần sao chép dữ liệu qua các vùng địa lý khác nhau (geo-redundancy) để đảm bảo tính sẵn sàng cao (high availability) và DR. Giải pháp phải hỗ trợ failover tự động để đáp ứng RTO thấp (thường dưới vài phút) và ít quản lý.
(Kiến thức dựa trên Azure SQL Database phiên bản mới nhất 2024-2026, với auto-failover groups hỗ trợ serverless và hyperscale.)

✅ Đáp án đúng: auto-failover groups

Lý do chọn đáp án này:
Auto-failover groups là tính năng được thiết kế chuyên biệt cho Azure SQL Database và Azure SQL Managed Instance, cho phép tự động failover giữa các vùng (regions) mà không cần can thiệp thủ công.

  • RTO thấp: Failover chỉ mất dưới 30 giây (thường 1-2 phút), đáp ứng yêu cầu giảm thời gian khôi phục.
  • Administrative effort thấp: Tự động phát hiện sự cố, tự động failover/read-write connection routing, không cần script hay manual intervention.
  • Hỗ trợ readable secondary và listener endpoint tự động.
    🛠️ Cách triển khai: Tạo failover group giữa primary và secondary database qua Azure Portal/CLI/PowerShell.

Nguồn tham khảo:
📘 Microsoft Docs: Auto-failover groups (Azure SQL Database) (cập nhật 2025).
📘 Azure SQL DR Best Practices (2026 preview).

📋 Giải thích tất cả các phương án

Dưới đây là phân tích chi tiết từng lựa chọn, giữ nguyên văn bản gốc bằng tiếng Anh:

  • Azure Site Recovery ❌ SAI
    Đây là dịch vụ DR cho máy ảo (VM), ứng dụng và server on-premises, không hỗ trợ trực tiếp Azure SQL Database. Nó yêu cầu manual failover và cấu hình phức tạp (replication agent), dẫn đến RTO cao (giờ) và administrative effort lớn. Không phù hợp cho database PaaS như Azure SQL.

  • active geo-replication ❌ SAI
    Tính năng sao chép dữ liệu active đến 4 secondary regions, hỗ trợ manual failover. RTO có thể dưới 1 phút nếu failover nhanh, nhưng yêu cầu administrative effort cao (phải trigger failover thủ công, quản lý listener, DNS). Không tự động như auto-failover groups, vi phạm yêu cầu "minimizes administrative effort".

  • auto-failover groups ✅ ĐÚNG
    Như đã giải thích ở trên: Tự động failover, RTO thấp (30s-2 phút), effort thấp với policy tự động. Đây là lựa chọn tối ưu cho Azure SQL DR theo best practices Microsoft.

  • Azure Backup ❌ SAI
    Dịch vụ backup và restore point-in-time (PITR), hỗ trợ geo-redundant storage. Nhưng không phải DR real-time: Restore mất giờ đến ngày (RTO cao), yêu cầu manual restore và không tự động failover. Chỉ phù hợp cho backup, không đáp ứng yêu cầu khôi phục nhanh khi datacenter fail.

🧩 Tóm tắt so sánh: Auto-failover groups vượt trội ở tính tự động hóa (automatic policy), trong khi các option khác cần manual steps hoặc không dành cho Azure SQL. Nếu triển khai, hãy test failover drill thường xuyên! 🚀

Câu 177
You have an Azure subscription.

You need to deploy a new Azure SQL database by using Azure Command-Line Interface (CLI).

Which three parameters are required?
  1. A --name, --edition, and --capacity
  2. B --name, --tier, and --min-capacity
  3. C --name, --resource-group, and --server
  4. D --name, --licence-type, and --capacity
Xem giải thích

🧩 Giải thích nội dung câu hỏi

Câu hỏi yêu cầu xác định ba tham số bắt buộc (required parameters) khi triển khai một cơ sở dữ liệu Azure SQL mới bằng công cụ Azure Command-Line Interface (CLI), cụ thể là lệnh az sql db create.

  • Bối cảnh: Bạn có một subscription Azure và cần tạo database Azure SQL (không phải Managed Instance). Lệnh CLI này được sử dụng để tạo database trên một Azure SQL Server hiện có.
  • Yêu cầu chính: Phải chỉ ra đúng ba tham số bắt buộc mà không có chúng, lệnh sẽ báo lỗi và không thực thi được. Các tham số này bao gồm thông tin cơ bản để định vị và đặt tên database trong Azure.
  • Phiên bản cập nhật: Dựa trên tài liệu Azure CLI mới nhất (phiên bản 2.65.0+ đến năm 2026), lệnh az sql db create yêu cầu chính xác --resource-group, --server, và --name để xác định nhóm tài nguyên, server SQL, và tên database. Các tham số khác như edition, capacity chỉ là tùy chọn (optional).

📘 Nguồn tham khảo:

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: --name, --resource-group, and --server

Lý do 🛠️:

  • Đây là ba tham số bắt buộc theo tài liệu Azure CLI.
    • --resource-group: Xác định nhóm tài nguyên chứa server SQL.
    • --server: Tên hoặc ID của Azure SQL Server hiện có (database phải attach vào server).
    • --name: Tên duy nhất của database mới.
  • Không có chúng, lệnh sẽ thất bại ngay lập tức. Ví dụ lệnh cơ bản: az sql db create --resource-group myRG --server myserver --name mydb.

📋 Giải thích tất cả các phương án

Dưới đây là phân tích chi tiết từng lựa chọn, với ✅ cho đúng và ❌ cho sai. Tôi giữ nguyên văn bản gốc tiếng Anh của phương án, chỉ giải thích bằng tiếng Việt:

  • ✅ [ĐÚNG] --name, --resource-group, and --server
    🟢 Lý do đúng: Như đã giải thích ở trên, đây chính xác là ba tham số required theo tài liệu chính thức. Chúng đảm bảo Azure biết vị trí (resource-group + server) và tên (name) của database. Không thể tạo DB mà thiếu bất kỳ cái nào!

  • ❌ [SAI] --name, --edition, and --capacity
    🔴 Lý do sai: --edition (ví dụ: Basic, Standard, Premium) và --capacity (số DTU/vCore) là tùy chọn. Bạn có thể dùng giá trị mặc định hoặc chỉ định sau. Lệnh vẫn chạy nếu thiếu chúng, dùng cấu hình mặc định của server.

  • ❌ [SAI] --name, --tier, and --min-capacity
    🔴 Lý do sai: --tier (ví dụ: GeneralPurpose) và --min-capacity (dành cho serverless model) chỉ áp dụng cho Hyperscale hoặc Serverless tier, và là tùy chọn. Thiếu chúng không làm lệnh thất bại; Azure dùng tier mặc định của server.

  • ❌ [SAI] --name, --licence-type, and --capacity
    🔴 Lý do sai: --licence-type (ví dụ: LicenseIncluded) và --capacity là tùy chọn nâng cao, dùng để tối ưu chi phí BYOL (Bring Your Own License). Chúng không bắt buộc; lệnh tạo DB cơ bản không cần chúng.

💡 Lưu ý cuối: Để thực hành, hãy chạy az sql db create --help trên CLI Azure để xem danh sách required parameters (marked with *). Nếu cần hỗ trợ triển khai thực tế, tôi có thể hướng dẫn lệnh đầy đủ! 🚀

Câu 178
You have an Azure subscription that contains the resources shown in the following table.



You plan to use SQLDB11 as an elastic job database to run jobs on SQLDB11 and SQLDB22.

What is the minimum number of database scoped credentials required for the elastic jobs?
  1. A 1
  2. B 2
  3. C 3
  4. D 4
Xem giải thích

🧩 Phân tích nội dung câu hỏi

Câu hỏi thuộc chứng chỉ DP-300: Administering Microsoft Azure SQL Solutions (phiên bản cập nhật đến 2026), tập trung vào tính năng Elastic Jobs trong Azure SQL Database.

  • Bối cảnh từ hình ảnh (bảng tài nguyên):

    • SQLSVR1 (Logical SQL Server): Chỉ host 1 database là SQLDB11 (Azure SQL Database).
    • SQLSVR2 (Logical SQL Server): Host 2 Azure SQL Databases, trong đó SQLDB22 (Azure SQL Database) được host bởi server này.

    📸 Hình ảnh minh họa bảng tài nguyên xác nhận: SQLDB11 nằm trên SQLSVR1 (1 DB/server), SQLDB22 nằm trên SQLSVR2 (server host 2 DB, nhưng chỉ target SQLDB22 ở đây). Không có database nào khác được đề cập.

  • Yêu cầu chính: Sử dụng SQLDB11 làm elastic job database (cơ sở dữ liệu trung tâm để lưu trữ và thực thi jobs). Các job sẽ chạy trên SQLDB11 (chính nó) và SQLDB22 (target khác).

  • Vấn đề cốt lõi 🛠️: Elastic Jobs yêu cầu database-scoped credentials (tài nguyên xác thực cấp database) trong job database (SQLDB11) để Elastic Job Agent có thể kết nối và thực thi jobs trên các target logical servers.

    • Mỗi logical server cần ít nhất 1 credential riêng (dùng SQL authentication hoặc managed identity).
    • SQLDB11 và SQLDB22 nằm trên 2 logical servers khác nhau (SQLSVR1 và SQLSVR2), nên cần credential cho từng server.
    • Không cần credential riêng cho từng database trên cùng server; chỉ cần per logical server.
    • Tính năng này không thay đổi trong các bản cập nhật Azure SQL đến 2026 (vẫn yêu cầu credential cho cross-server targets).

✅ Đáp án đúng: 2

Lý do lựa chọn 📘:

  • Cần 1 credential cho SQLSVR1 (để target SQLDB11 - chính job database).
  • Cần 1 credential thứ 2 cho SQLSVR2 (để target SQLDB22).
  • Tổng tối thiểu 2 database-scoped credentials trong SQLDB11. Đây là yêu cầu bắt buộc theo thiết kế Elastic Jobs để đảm bảo bảo mật và kết nối cross-server. Nếu chỉ 1 credential, job không thể target server thứ 2.

📋 Giải thích tất cả các phương án

  • ❌ 1: Sai vì chỉ đủ cho 1 logical server. Với 2 servers (SQLSVR1 và SQLSVR2), job agent không thể kết nối SQLSVR2 để chạy job trên SQLDB22. Elastic Jobs không tự động dùng credential của job db cho targets khác server.

  • ✅ 2: Đúng như giải thích trên. Phù hợp với quy tắc 1 credential per target logical server, ngay cả khi target chính job db.

  • ❌ 3: Sai và thừa thãi. SQLSVR2 host 2 DB nhưng chỉ cần 1 credential cho toàn server, không cần thêm cho DB thứ 2 (không target). Không có yêu cầu credential riêng cho job db "chính nó" ngoài credential server.

  • ❌ 4: Sai hoàn toàn vì quá mức cần thiết. Elastic Jobs tối ưu hóa chỉ yêu cầu credential per server, không per DB hay per job step. Số lượng DB trên SQLSVR2 (2) không ảnh hưởng.

🔗 Tài liệu tham khảo (cập nhật 2026)

Hy vọng phân tích này giúp bạn nắm vững! 🚀

Câu 179
You have an Azure subscription that contains an Azure SQL managed instance named SQLMI1 and a Log Analytics workspace named Workspace1.

You need to collect performance metrics for SQLMI1 and stream the metrics to Workspace.

What should you do first?
  1. A Create a private endpoint connection on SQLMI1.
  2. B Configure Azure SQL Analytics to use Workspace1.
  3. C Modify the Compute + storage settings for SQLMI1.
  4. D Modify the diagnostic settings for SQLMI1.
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 thu thập metrics hiệu suất (performance metrics) từ một Azure SQL Managed Instance có tên SQLMI1 trong subscription Azure, và stream (chuyển tiếp) các metrics này đến Log Analytics workspace tên Workspace1.

📌 Yêu cầu chính: Xác định bước đầu tiên (first) cần thực hiện để đạt được mục tiêu này.

  • Azure SQL Managed Instance là dịch vụ quản lý cơ sở dữ liệu SQL Server đầy đủ tính năng trên Azure, hỗ trợ thu thập metrics như CPU usage, I/O, storage, v.v.
  • Log Analytics workspace là nơi lưu trữ và phân tích logs/metrics trong Azure Monitor.
  • Theo tài liệu Microsoft cập nhật đến năm 2026 (Azure Monitor và Azure SQL Managed Instance phiên bản mới nhất), việc stream metrics yêu cầu cấu hình diagnostic settings để kích hoạt gửi dữ liệu telemetry từ resource đến workspace. Không có thay đổi lớn từ 2023-2026, diagnostic settings vẫn là bước đầu tiên chuẩn.

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Modify the diagnostic settings for SQLMI1.

🛠️ Lý do chi tiết:

  • Đây là bước đầu tiên để enable thu thập và stream performance metrics (như Basic, InstanceAndDatabaseHealth metrics) từ SQLMI1 đến Workspace1.
  • Trong Azure portal, bạn truy cập SQLMI1 > Diagnostic settings > Add diagnostic setting, chọn các metrics cần (ví dụ: AllMetrics), và route đến Log Analytics workspace.
  • Điều này kích hoạt Azure Monitor thu thập dữ liệu telemetry và gửi trực tiếp mà không cần tool bên thứ ba. Metrics sẽ sẵn sàng query trong Workspace1 sau vài phút.
  • Xác nhận cập nhật 2026: Theo Azure Monitor docs, diagnostic settings hỗ trợ SQL Managed Instance với schema metrics mới nhất (bao gồm vCore utilization, DTU, query performance).

📋 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á với lý do đúng/sai dựa trên best practices Azure:

  • ❌ [SAI] Create a private endpoint connection on SQLMI1.
    Phương án này không liên quan đến việc thu thập metrics. Private endpoint chỉ dùng để secure network access (kết nối private qua VNet, tránh public internet). Nó không kích hoạt monitoring hay streaming đến Log Analytics. Thực hiện bước này trước sẽ không giúp stream metrics.

  • ❌ [SAI] Configure Azure SQL Analytics to use Workspace1.
    Phương án này không áp dụng cho Azure SQL Managed Instance. Azure SQL Analytics (nay là SQL Insights trong Azure Monitor) chỉ dành cho Azure SQL Database (single DB/elastic pool), không hỗ trợ Managed Instance. Với SQLMI, phải dùng diagnostic settings thay thế.

  • ❌ [SAI] Modify the Compute + storage settings for SQLMI1.
    Phương án này hoàn toàn không liên quan. Compute + storage settings chỉ dùng để scale tài nguyên (vCore, storage size, tier như General Purpose/Business Critical). Nó không ảnh hưởng đến monitoring hay streaming metrics đến Workspace1.

  • ✅ [ĐÚNG] Modify the diagnostic settings for SQLMI1.
    Như đã giải thích ở trên, đây là bước chính xác và đầu tiên. Nó enable metrics collection và routing trực tiếp đến Log Analytics, hỗ trợ performance monitoring toàn diện cho SQLMI.

📘 Tài liệu tham khảo (cập nhật mới nhất đến 2026)

Hy vọng phân tích này giúp bạn nắm vững! Nếu cần demo Azure portal, hãy cho biết thêm. 🚀

Câu 180
You are modifying an existing disaster recovery solution for an Azure SQL managed instance that contains a failover group named FG1.

You need to ensure the maximum in-transit time for FG1 when an automatic failover oсcurs.

What should you configure?
  1. A an availability group
  2. B a secondary managed instance
  3. C a failover policy
  4. D a grace period
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 sửa đổi giải pháp khôi phục thảm họa (disaster recovery - DR) cho một Azure SQL Managed Instance đang sử dụng failover group có tên FG1.
Mục tiêu chính là đảm bảo thời gian tối đa cho dữ liệu đang truyền (in-transit time) khi xảy ra failover tự động (automatic failover).

  • Failover group trong Azure SQL Managed Instance là tính năng cho phép đồng bộ dữ liệu giữa primary và secondary replica, hỗ trợ failover tự động để giảm thiểu downtime và data loss.
  • In-transit time đề cập đến khoảng thời gian mà các giao dịch đã commit trên primary chưa kịp đồng bộ đến secondary trước khi failover xảy ra.
  • Yêu cầu là cấu hình một yếu tố cụ thể để tối đa hóa thời gian này, giúp giảm rủi ro mất dữ liệu bằng cách cho phép primary chờ secondary "bắt kịp" trước khi chuyển đổi vai trò.
    📘 Dẫn nguồn: Tài liệu chính thức Microsoft Azure Docs - Failover groups for Azure SQL Managed Instance (cập nhật đến phiên bản 2024-2026, hỗ trợ grace period lên đến 2 giờ).

✅ Đáp án đúng: a grace period

Lý do lựa chọn:
🛠️ Grace period là tham số cấu hình trực tiếp trong failover group của Azure SQL Managed Instance, cho phép đặt thời gian chờ tối đa (từ 1 phút đến 2 giờ) để primary replica giữ vai trò trước khi failover tự động. Điều này đảm bảo maximum in-transit time bằng cách trì hoãn failover cho đến khi secondary replica đồng bộ kịp các giao dịch đang truyền.

  • Nếu không cấu hình, mặc định là 0 (failover ngay lập tức).
  • Đây là cách chính xác, cập nhật nhất theo Azure (không thay đổi đến 2026).
    Ví dụ lệnh PowerShell: New-AzSqlInstanceFailoverGroup -GracePeriod 120 (đơn vị phút).

📋 Giải thích tất cả các phương án

  • ❌ an availability group:
    Phương án này sai vì availability group (AG) là tính năng của SQL Server on-premises hoặc VM, không áp dụng trực tiếp cho Azure SQL Managed Instance failover groups. AG không kiểm soát in-transit time trong failover tự động của Managed Instance; thay vào đó, failover group sử dụng listener và replication riêng biệt.

  • ❌ a secondary managed instance:
    Phương án này sai vì secondary managed instance là thành phần bắt buộc để tạo failover group (primary + secondary), nhưng nó không phải là cấu hình để kiểm soát maximum in-transit time. Việc thêm secondary chỉ thiết lập topology DR, không điều chỉnh thời gian chờ đồng bộ dữ liệu.

  • ❌ a failover policy:
    Phương án này sai vì failover policy chỉ có hai chế độ: Manual hoặc Automatic, dùng để quyết định ai kích hoạt failover (tự động hay thủ công). Nó không liên quan đến việc đặt giới hạn thời gian in-transit; policy này không ảnh hưởng đến grace period hoặc data sync delay.

  • ✅ a grace period:
    Phương án này đúng như đã giải thích ở trên. Đây là cấu hình chuyên biệt để tối ưu hóa in-transit time trong automatic failover, giúp giảm RPO (Recovery Point Objective) xuống mức thấp nhất có thể bằng cách chờ đồng bộ.

🛠️ Lời khuyên thực tế: Sử dụng Azure Portal hoặc PowerShell để cập nhật grace period cho FG1: Set-AzSqlInstanceFailoverGroup -GracePeriod <minutes>. Kiểm tra metrics qua Azure Monitor để theo dõi sync lag!
📘 Tài liệu tham khảo bổ sung: Configure failover groups và Best practices for DR.