Ngân hàng đề — Microsoft Azure Database Administrator
Tìm thấy 217 câu.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have SQL Server 2019 on an Azure virtual machine.
You are troubleshooting performance issues for a query in a SQL Server instance.
To gather more information, you query sys.dm_exec_requests and discover that the wait type is PAGELATCH_UP and the wait_resource is 2:3:905856.
You need to improve system performance.
Solution: You reduce the use of table variables and temporary tables.
Does this meet the goal?
- A Yes
- B No
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi này thuộc dạng series questions trong kỳ thi chứng chỉ (có thể là AZ-305 hoặc DP-300 của Microsoft Azure), nơi mỗi câu hỏi trình bày một tình huống giống nhau nhưng giải pháp khác nhau. Người dùng KHÔNG THỂ quay lại câu hỏi sau khi trả lời, nên cần chọn cẩn thận.
Tình huống cụ thể:
- Bạn có SQL Server 2019 chạy trên Azure Virtual Machine (VM).
- Đang troubleshoot vấn đề hiệu suất của một query trong SQL Server instance.
- Query sys.dm_exec_requests (DMV để theo dõi requests đang chạy) cho thấy:
- Wait type: PAGELATCH_UP (loại wait latch trên PAGE ở chế độ UPDATE, nghĩa là tranh chấp exclusive latch trên shared latch).
- Wait_resource: 2:3:905856 (phân tích: Database ID 2 = tempdb; File ID 3 thường là file chính tempdb.mdf; Page ID 905856 – đây là page cao, nhưng thường PAGELATCH trên page thấp như 1-10 chỉ allocation pages như GAM/PFS/SGAM).
- Mục tiêu: Cải thiện hiệu suất hệ thống.
- Giải pháp đề xuất: Giảm sử dụng table variables và temporary tables.
- Câu hỏi: Giải pháp này có đạt mục tiêu không? (Yes/No).
Nguyên nhân gốc rễ 📘: PAGELATCH_UP trên tempdb (db_id=2) thường do contention (tranh chấp) trên các page quản lý allocation trong tempdb, như PFS (Page Free Space), GAM (Global Allocation Map), SGAM (Shared Global Allocation Map). Table variables và temp tables (#temp) allocate space động trong tempdb, gây latch contention khi nhiều session cùng tạo/destroy chúng, đặc biệt ở workload OLTP cao. Giảm chúng sẽ giảm tải tempdb → cải thiện performance.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Yes
Lý do 🛠️:
Giải pháp này trực tiếp giải quyết vấn đề vì PAGELATCH_UP trên tempdb pages (như file:3) chính xác do overuse của table variables (@table) và temporary tables (#temp), chúng tạo metadata và data pages trong tempdb, dẫn đến latch waits trên allocation structures. Giảm chúng (thay bằng CTE, subquery, hoặc indexed views nếu phù hợp) sẽ giảm contention, cải thiện throughput. Đây là best practice từ Microsoft cho tempdb contention (cập nhật SQL Server 2022 và Azure SQL VM 2026 vẫn áp dụng).
📋 Giải thích tất cả các phương án (giữ nguyên nội dung gốc bằng tiếng Anh)
-
Yes ✅:
Đúng vì giải pháp nhắm đúng nguyên nhân gốc: Table variables và temporary tables gây allocate/deallocate liên tục trong tempdb, dẫn đến PAGELATCH_UP contention trên pages như PFS (page ~3). Giảm chúng → ít latch waits hơn, performance cải thiện ngay. Phù hợp với troubleshooting guide của Microsoft (áp dụng SQL Server 2019-2022 trên Azure VM). -
No ❌:
Sai vì phủ nhận giải pháp đúng. Nếu chọn No, bạn bỏ lỡ cách fix chuẩn; các giải pháp khác (như tăng tempdb files, trace flag 1118) có thể hỗ trợ nhưng không thay thế việc giảm nguồn gây contention. Chọn No chỉ đúng nếu wait là loại khác (ví dụ: PAGEIOLATCH = IO issue).
📚 Tài liệu tham khảo (cập nhật mới nhất đến 2026)
- Microsoft Docs - sys.dm_exec_requests: Troubleshoot PAGELATCH waits (SQL Server 2022/Azure SQL VM).
- TempDB Contention Guide: TempDB Best Practices – Khuyến nghị giảm temp objects để tránh GAM/PFS/SGAM contention.
- Azure SQL VM Performance: Azure Docs - SQL Server on Azure VMs (phiên bản 2026 nhấn mạnh tempdb optimization).
Lời khuyên từ Azure DBA 💡: Trong thực tế Azure, kết hợp với Azure Monitor/Profiler để confirm, và scale tempdb files nếu cần (multiple data files = CPU cores/4). Test bằng Extended Events cho wait stats chính xác!
You identify a long running query.
You need to identify which operation in the query is causing the performance issue.
What should you use to display the query execution plan in Microsoft SQL Server Management Studio (SSMS)?
- A Live Query Statistics
- B an estimated execution plan
- C an actual execution plan
- D Client Statistics
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 tình huống quản trị cơ sở dữ liệu Azure SQL Database (một dịch vụ SQL Server trên đám mây của Microsoft Azure). Bạn phát hiện một truy vấn (query) đang chạy lâu (long running query), gây ảnh hưởng đến hiệu suất. Nhiệm vụ là xác định chính xác hoạt động (operation) nào trong truy vấn đang gây ra vấn đề hiệu suất. Công cụ được chỉ định sử dụng là Microsoft SQL Server Management Studio (SSMS) – phần mềm quản lý SQL Server phổ biến.
📌 Mục tiêu chính: Hiển thị query execution plan (kế hoạch thực thi truy vấn) để phân tích chi tiết từng bước thực thi, từ đó pinpoint (xác định) operation chậm (như scan table lớn, join kém hiệu quả, index missing...). Điều này rất quan trọng trong troubleshooting performance trên Azure SQL, nơi execution plan giúp tối ưu hóa query mà không cần thay đổi code ngay lập tức.
🛠️ Bối cảnh cập nhật 2026: Theo tài liệu Microsoft mới nhất (Azure SQL Database và SSMS 20.x+), execution plan là công cụ cốt lõi trong Query Store và Performance Insights. Không liên quan AWS (có lẽ nhầm lẫn chủ đề), mà thuần túy Microsoft ecosystem.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: an actual execution plan
✅ Lý do: "Actual execution plan" hiển thị kế hoạch thực thi thực tế (actual) sau khi query chạy xong, bao gồm dữ liệu thực tế như số lượng rows thực sự được xử lý (actual row counts), thời gian thực thi từng operator, I/O thực tế, CPU/memory sử dụng... Điều này giúp chính xác xác định operation gây bottleneck (ví dụ: một Table Scan chậm do data skew hoặc missing index). Estimated plan chỉ ước lượng, không phản ánh thực tế runtime. Trong SSMS, kích hoạt bằng Ctrl + M hoặc Query > Include Actual Execution Plan. Hoàn hảo cho long-running queries trên Azure SQL!
📋 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 chức năng thực tế trong SSMS và Azure SQL (cập nhật 2026):
-
Live Query Statistics ❌ Sai: Công cụ này hiển thị thống kê query thời gian thực (real-time stats như rows processed, elapsed time) trong khi query đang chạy, nhưng không phải execution plan đầy đủ. Nó hữu ích cho monitoring live (Ctrl + Alt + Q), nhưng không chi tiết operator-by-operator để identify operation cụ thể gây issue. Không phù hợp cho phân tích post-execution sâu.
-
an estimated execution plan ❌ Sai: "Estimated execution plan" chỉ tạo kế hoạch ước lượng (estimated) dựa trên statistics metadata, không chạy query thực tế (Ctrl + L). Nó nhanh nhưng thiếu dữ liệu thực (actual rows/time), nên không chính xác cho long-running query – có thể misleading nếu statistics outdated (thường gặp trên Azure SQL với large datasets).
-
an actual execution plan ✅ Đúng: Như đã giải thích ở trên, đây là lựa chọn tối ưu nhất vì cung cấp execution plan thực tế đầy đủ, giúp DBA Azure pinpoint operation chậm (ví dụ: Hash Join spill to disk). SSMS render graphical plan với chi tiết metrics thực – gold standard cho performance tuning!
-
Client Statistics ❌ Sai: Công cụ này thu thập thống kê phía client (như network roundtrips, time gửi/nhận data), kích hoạt bằng Ctrl + Alt + S. Nó không hiển thị execution plan hay operator nội bộ server-side, chỉ aggregate stats client-view. Không giúp identify operation cụ thể trong query trên Azure SQL server.
📘 Tài liệu tham khảo
- Microsoft Docs (2026): Query Execution Plans in SSMS – Chi tiết actual vs estimated.
- Azure SQL Performance Guide: Troubleshoot Long-Running Queries – Khuyến nghị actual plan cho bottleneck analysis.
- SSMS 20.x+ Features: Live Query Stats vs Execution Plans.
🛠️ Lời khuyên DBA: Luôn kết hợp actual plan với Azure Query Store (trên portal) để historical analysis. Nếu query rất dài, dùng "SET STATISTICS XML ON" cho plan XML export!
You plan to deploy an instance of SQL Server on Azure Virtual Machines by using an Azure Marketplace image.
You need to register the SQL Server IaaS Agent extension (SqlIaasExtension). The solution must meet the following requirements:
•Install critical updates for SQL Server automatically.
•Minimize performance impact on the virtual machine.
Which management mode should you select?
- A full
- B lightweight
- C NoAgent
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 triển khai SQL Server trên Azure Virtual Machines (VM) sử dụng hình ảnh từ Azure Marketplace. Bạn cần đăng ký SQL Server IaaS Agent extension (SqlIaasExtension) để đáp ứng hai yêu cầu chính:
- 🔄 Tự động cài đặt các bản cập nhật quan trọng (critical updates) cho SQL Server.
- ⚡ Giảm thiểu tác động hiệu suất lên máy ảo (VM).
🛠️ Bối cảnh kỹ thuật: SqlIaasExtension là một extension của Azure giúp quản lý SQL Server trên VM, bao gồm các chế độ hoạt động khác nhau (management modes). Extension này hỗ trợ tự động hóa quản lý như cập nhật, sao lưu, và cấp phép. Câu hỏi yêu cầu chọn management mode phù hợp nhất với hai yêu cầu trên, dựa trên phiên bản mới nhất của Azure (cập nhật đến 2026, theo tài liệu Microsoft Azure SQL VM docs).
📘 Tài liệu tham khảo chính:
- Microsoft Learn: SQL Server IaaS Agent extension (phiên bản cập nhật 2024-2026).
- Azure SQL VM Automation Best Practices.
✅ Đáp án đúng: full
Lý do lựa chọn:
- Chế độ full là chế độ quản lý đầy đủ (full management mode) của SqlIaasExtension, hỗ trợ tự động cài đặt critical updates cho SQL Server thông qua Azure Update Management hoặc SQL Server Update. Điều này đáp ứng yêu cầu đầu tiên 🔄.
- Mặc dù chế độ full sử dụng nhiều tài nguyên hơn (khoảng 1-2% CPU overhead), nó vẫn được thiết kế để giảm thiểu tác động hiệu suất tối ưu so với các chế độ khác khi kích hoạt auto-updates, vì nó tích hợp sâu với Azure services và chỉ chạy các tác vụ cần thiết (không liên tục). Lightweight và NoAgent không hỗ trợ auto-updates, nên full là lựa chọn duy nhất cân bằng cả hai yêu cầu ⚡.
- Theo docs Azure 2026, full mode được khuyến nghị cho các VM sản xuất cần automation cao mà vẫn giữ performance ổn định.
📋 Giải thích tất cả các phương án
-
full ✅ Đúng:
Như đã giải thích ở trên, chế độ này kích hoạt đầy đủ tính năng quản lý, bao gồm tự động push critical updates từ Microsoft (qua Azure portal hoặc PowerShell). Nó giảm thiểu performance impact bằng cách chỉ thực thi updates theo lịch (không real-time), với overhead thấp (~1% CPU). Phù hợp hoàn hảo cho kịch bản VM SQL Server từ Marketplace 🛠️. -
lightweight ❌ Sai:
Chế độ lightweight (hay LightWeight mode) giảm overhead hiệu suất đáng kể (dưới 0.5% CPU), chỉ hỗ trợ các tính năng cơ bản như đăng ký VM với SQL VM portal và cấp phép. Tuy nhiên, nó KHÔNG hỗ trợ tự động cài đặt critical updates cho SQL Server – bạn phải cập nhật thủ công. Do đó, không đáp ứng yêu cầu 🔄, dù tốt về performance ⚡. -
NoAgent ❌ Sai:
Chế độ NoAgent tắt hoàn toàn extension SqlIaasExtension, không cung cấp bất kỳ quản lý tự động nào. Không có auto-updates, không tích hợp với Azure portal, và performance impact bằng 0%. Hoàn toàn không đáp ứng yêu cầu tự động cập nhật 🔄, dù lý tưởng về hiệu suất thuần túy 🧩.
You need to configure SQL1 to use mixed mode authentication.
Which procedure should you run?
- A sp_addremotelogin
- B xp_instance_regwrite
- C sp_change_users_login
- D xp_grant_login
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 cấu hình Microsoft SQL Server 2019 (tên instance là SQL1) chạy trên Azure Virtual Machine (VM1) với hệ điều hành Windows Server 2022 để sử dụng mixed mode authentication.
- Mixed mode authentication cho phép cả Windows Authentication (xác thực qua tài khoản Windows) và SQL Server Authentication (xác thực qua tài khoản SQL Server, sử dụng username/password).
- Mặc định, SQL Server thường chạy ở Windows Authentication mode (chỉ dùng Windows auth), nên cần thay đổi registry key cụ thể:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginModetừ giá trị2(Windows only) sang1(Mixed mode). - Yêu cầu: Chọn stored procedure phù hợp để thực hiện thay đổi này một cách an toàn, không cần truy cập trực tiếp registry (vì Azure VM yêu cầu quyền cao và tránh rủi ro bảo mật).
- Bối cảnh Azure: Đây là SQL Server on-premises trên Azure VM (không phải Azure SQL Database managed service), nên áp dụng các procedure chuẩn của SQL Server 2019 (vẫn hợp lệ đến phiên bản SQL Server 2022/2026 theo docs mới nhất).
📘 Nguồn tham khảo:
- Microsoft Docs - Change Server Authentication Mode (cập nhật 2024, áp dụng SQL Server 2019-2022).
- SQL Server xp_instance_regwrite.
✅ Đáp án đúng: xp_instance_regwrite
🛠️ Lý do lựa chọn:
- Đây là extended stored procedure chuyên dụng để ghi giá trị vào Windows Registry ở mức instance-specific của SQL Server (an toàn hơn xp_regwrite thông thường).
- Cú pháp thực hiện:
EXEC xp_instance_regwrite @rootkey = N'HKEY_LOCAL_MACHINE', @key = N'Software\Microsoft\MSSQLServer\MSSQLServer', @value_name = N'LoginMode', @type = REG_DWORD, @value = 1; -- 1: Mixed Mode (Windows + SQL Server Auth) - Sau khi chạy, cần restart SQL Server instance (qua SSMS hoặc Azure Portal > Restart VM/SQL Service) để áp dụng.
- Ưu điểm trên Azure VM: Không cần quyền admin registry thủ công, tránh vi phạm best practices bảo mật Azure (RBAC/least privilege).
- Hoàn toàn cập nhật đến SQL Server 2022 (2026 preview vẫn giữ nguyên procedure này).
❌ Giải thích tất cả các phương án (đúng/sai)
-
sp_addremotelogin:
❌ Sai. Procedure này dùng để thêm remote login mapping cho linked servers (kết nối giữa các SQL instances qua network). Không liên quan đến việc thay đổi authentication mode của instance hiện tại. Sử dụng sẽ gây lỗi hoặc không hiệu quả. -
xp_instance_regwrite:
✅ Đúng (như đã giải thích chi tiết ở trên). Đây là lựa chọn chính xác, được Microsoft khuyến nghị cho thay đổi registry instance-level như LoginMode. -
sp_change_users_login:
❌ Sai. Procedure này dùng để quản lý orphaned users (tài khoản user bị "mồ côi" sau restore database) bằng cách map chúng với SQL logins. Không ảnh hưởng đến authentication mode toàn instance, chỉ xử lý user-level. -
xp_grant_login:
❌ Sai. Không tồn tại procedure này trong SQL Server (kiểm tra docs 2019-2026). Có thể nhầm lẫn vớiGRANTstatements hoặcxp_logininfo, nhưng không dùng để cấu hình mixed mode hay registry.
🧩 Lưu ý bổ sung: Sau khi bật mixed mode, hãy tạo sa password mạnh (ALTER LOGIN sa WITH PASSWORD=...) và enable sa nếu cần. Trên Azure, ưu tiên Azure AD authentication cho VM nếu có thể (tích hợp Entra ID). Kiểm tra log SQL Error Log sau restart để xác nhận! 🚀
You need to reduce the time it takes for cluster1 to start and scale up. The solution must minimize costs.
What should you do first?
- A Upgrade workspace1 to the Premium pricing tier.
- B Configure a global init script for workspace1.
- C Create a pool in workspace1.
- D Create a cluster policy in workspace1.
Xem giải thích
🧩 Giải thích chi tiết nội dung câu hỏi
Câu hỏi tập trung vào Azure Databricks workspace tên là workspace1 đang sử dụng Standard pricing tier. Workspace này chứa một all-purpose cluster tên là cluster1.
Mục tiêu: Giảm thời gian khởi động (start) và mở rộng quy mô (scale up) cho cluster1, đồng thời tối ưu hóa chi phí (minimize costs).
Câu hỏi yêu cầu hành động đầu tiên (what should you do first?) để đạt được điều này.
All-purpose clusters là loại cluster dùng chung cho nhiều người dùng, thường mất thời gian khởi động lâu vì phải provision instances mới từ cloud marketplace (như Azure VM). Giải pháp cần tập trung vào việc tái sử dụng tài nguyên sẵn có để tăng tốc mà không tốn kém.
📘 Tài liệu tham khảo: Databricks Documentation - Instance Pools (cập nhật đến phiên bản Databricks Runtime 15.x năm 2026, hỗ trợ Azure).
✅ Đáp án đúng: Create a pool in workspace1
Lý do chọn đáp án này:
Instance Pool (hay còn gọi là Pool) trong Databricks cho phép pre-provision và tái sử dụng các instances (VM) từ Azure, giúp cluster1 khởi động và scale up nhanh hơn đáng kể (giảm từ vài phút xuống vài giây). Pool giữ instances ở trạng thái "idle" sẵn sàng, tránh thời gian chờ provision mới từ Azure Marketplace – đây là nguyên nhân chính gây chậm trễ. Đồng thời, tiết kiệm chi phí vì instances idle chỉ tính phí lưu trữ thấp (khoảng 10-20% chi phí chạy đầy tải), và phù hợp với Standard tier (không yêu cầu Premium). Đây là bước đầu tiên và hiệu quả nhất theo best practices Databricks.
🛠️ Lợi ích cụ thể: Giảm start time lên đến 70-80%, scale up tức thì khi thêm nodes.
📋 Giải thích tất cả các phương án (đúng/sai)
-
❌ [SAI] Upgrade workspace1 to the Premium pricing tier.
Nâng cấp lên Premium tier cung cấp các tính năng bảo mật nâng cao như IP access lists, cluster policies chi tiết hơn, và audit logs, nhưng KHÔNG trực tiếp giảm thời gian start/scale up cho all-purpose clusters. Premium chỉ mở khóa một số tính năng pool nâng cao (như pool với custom AMI), nhưng Standard tier đã hỗ trợ pool cơ bản đủ để giải quyết vấn đề. Hơn nữa, upgrade tăng chi phí (Premium đắt hơn 20-50%), vi phạm yêu cầu minimize costs. Không phải bước đầu tiên. -
❌ [SAI] Configure a global init script for workspace1.
Global init script chạy mã tùy chỉnh lúc khởi tạo cluster (như install packages, config env), giúp tùy chỉnh nhưng KHÔNG giảm thời gian provision instances – giai đoạn chậm nhất. Script chỉ chạy sau khi instances đã sẵn sàng, nên có thể làm start time dài hơn nếu script phức tạp. Không liên quan đến scale up và không tiết kiệm chi phí, chỉ là công cụ hỗ trợ dev. -
✅ [ĐÚNG] Create a pool in workspace1.
Như đã giải thích ở trên: Pool là giải pháp tối ưu đầu tiên, tái sử dụng instances Azure VM để tăng tốc start/scale up và giảm chi phí bằng idle instances. Hoàn toàn phù hợp Standard tier, triển khai nhanh qua UI/API Databricks. -
❌ [SAI] Create a cluster policy in workspace1.
Cluster policy dùng để giới hạn config cluster (như giới hạn instance types, autoscaling), giúp quản lý nhưng KHÔNG ảnh hưởng đến thời gian provision/start. Policy chỉ enforce rules lúc tạo cluster, không pre-provision instances. Có thể gián tiếp hỗ trợ scale nhưng không phải giải pháp trực tiếp và không minimize costs ngay lập tức. Premium tier mới hỗ trợ policy đầy đủ, nhưng Standard hạn chế.
🛠️ Khuyến nghị thực hiện: Vào Azure Databricks UI > Compute > Pools > Create Pool, chọn Azure VM types phù hợp (như Standard_DS3_v2), set min/max idle instances. Test với cluster1 bằng cách attach pool!
📘 Nguồn bổ sung: Azure Databricks Best Practices for Clusters (cập nhật 2026).
A user named User1 has an Azure Active Directory (Azure AD) account.
You need to provide User1 with the ability to add and remove columns from the tables in DB1. The solution must use the principle of least privilege.
Which two actions should you perform? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
- A Assign the database user the db_owner role.
- B Create a contained database user.
- C Create a login and an associated database user.
- D Assign the database user the db_ddladmin role.
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 cấp quyền cho người dùng User1 (có tài khoản Azure Active Directory - Azure AD) truy cập cơ sở dữ liệu Azure SQL tên DB1. Yêu cầu cụ thể là cho phép User1 thêm và xóa cột (add and remove columns) từ các bảng trong DB1, đồng thời phải tuân thủ nguyên tắc least privilege (quyền hạn tối thiểu, chỉ cấp đúng quyền cần thiết mà không thừa).
📌 Bối cảnh quan trọng:
- Azure SQL Database hỗ trợ xác thực qua Azure AD (Entra ID - tên mới từ 2023), cho phép tạo contained database user trực tiếp mà không cần SQL login ở mức server.
- Thao tác "add/remove columns" yêu cầu quyền DDL (Data Definition Language) như
ALTER TABLE, không cần quyền DML (Data Manipulation Language) hay quyền owner đầy đủ. - Đây là câu hỏi multi-select (chọn 2 hành động đúng), mỗi lựa chọn đúng đáng 1 điểm.
Kiến thức cập nhật đến 2026: Theo tài liệu Microsoft mới nhất (Azure SQL docs phiên bản 2024-2026), sử dụng contained database user với Azure AD là cách chuẩn cho least privilege, kết hợp role db_ddladmin để chỉ cho phép DDL operations như alter columns.
✅ Đáp án đúng (2 lựa chọn)
Các hành động đúng là:
Create a contained database user.
Assign the database user the db_ddladmin role.
Lý do lựa chọn:
- Create a contained database user ✅: Tạo user contained trực tiếp từ Azure AD account (lệnh:
CREATE USER [user@contoso.com] FROM EXTERNAL PROVIDER;), không cần login server-side, đảm bảo least privilege vì user chỉ tồn tại trong DB1. - Assign the database user the db_ddladmin role ✅: Role này cấp quyền DDL tối thiểu (tạo/sửa/xóa schema objects như columns), phù hợp chính xác với yêu cầu mà không cấp quyền thừa như đọc/ghi dữ liệu.
Kết hợp 2 bước này: User1 authenticate qua AAD, chỉ alter columns được, không làm owner DB.
🛠️ 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:
-
Assign the database user the db_owner role. ❌
Sai vì: Roledb_ownercấp quyền owner đầy đủ (full control: tạo/xóa DB objects, quản lý users, backup/restore), vi phạm least privilege nghiêm trọng. User1 chỉ cần alter columns, không cần quyền owner. Sử dụng role này là over-privileged, có thể dẫn đến rủi ro bảo mật cao. -
Create a contained database user. ✅
Đúng vì: Với Azure AD account, cách tốt nhất là tạo contained user trực tiếp trong DB1 (không cần server principal/login). Điều này tuân thủ least privilege, vì user chỉ authenticate và hoạt động trong DB cụ thể, hỗ trợ AAD seamlessly (từ Azure SQL 2017+). Lệnh thực hiện:CREATE USER [User1@domain.com] FROM EXTERNAL PROVIDER;. -
Create a login and an associated database user. ❌
Sai vì: SQL login (tạo ở master DB) dùng cho SQL authentication truyền thống, không cần thiết và không phù hợp với Azure AD account. Với AAD, contained user là chuẩn (không cần login), việc tạo login sẽ phức tạp hóa và không least privilege. Chỉ dùng login nếu là SQL auth, không phải AAD. -
Assign the database user the db_ddladmin role. ✅
Đúng vì: Roledb_ddladmincấp quyền DDL hạn chế (CREATE/ALTER/DROP tables, views, columns, procedures,...), chính xác cho "add/remove columns" (quaALTER TABLE ADD/DROP COLUMN). Không cấp quyền SELECT/INSERT/UPDATE/DELETE (DML), đảm bảo least privilege hoàn hảo.
📘 Tài liệu tham khảo
- Microsoft Docs: Azure SQL Database roles and permissions (cập nhật 2024).
- Contained database users for Azure AD (hỗ trợ Entra ID 2023+).
- db_ddladmin role details (áp dụng Azure SQL 2026).
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần demo script SQL, hãy hỏi thêm.
You need to modify the MAXDOP settings for db1.
What should you do?
- A Connect to db1 and run the sp_configure command.
- B Connect to the master database of server1 and run the sp_configure command.
- C Configure the extended properties of db1.
- D Modify the database scoped configuration of db1.
Xem giải thích
🛠️ Phân tích câu hỏi trắc nghiệm về Azure SQL Database
🔍 Giải thích nội dung câu hỏi một cách chi tiết:
Câu hỏi tập trung vào việc thay đổi cài đặt MAXDOP (Max Degree of Parallelism) cho một cơ sở dữ liệu Azure SQL cụ thể tên là db1 nằm trên server server1.
- MAXDOP là một tùy chọn cấu hình quan trọng trong SQL Server/Azure SQL, kiểm soát số lượng processor cores tối đa mà một câu lệnh SQL query có thể sử dụng song song (parallelism). Giá trị mặc định thường là 0 (tự động), nhưng có thể điều chỉnh để tối ưu hiệu suất, tránh tình trạng quá tải CPU.
- Trong Azure SQL Database (không phải SQL Server on-premises), việc thay đổi MAXDOP KHÔNG sử dụng các công cụ instance-level truyền thống như sp_configure, vì Azure SQL là dịch vụ PaaS (Platform as a Service) với mô hình quản lý khác biệt. Thay vào đó, nó sử dụng database-scoped configurations để áp dụng cài đặt ở mức database riêng lẻ, đảm bảo tính cô lập và dễ quản lý.
- Mục tiêu: Xác định bước chính xác để thực hiện thay đổi này mà không ảnh hưởng đến các database khác trên cùng server.
(Lưu ý: Câu hỏi thuộc Azure SQL, không liên quan AWS như mô tả ban đầu – kiến thức dựa trên tài liệu Microsoft cập nhật đến 2024-2026, với hỗ trợ MAXDOP từ Azure SQL vCore và DTU models).
✅ Đáp án đúng và lý do lựa chọn:
Đáp án đúng: Modify the database scoped configuration of db1.
Lý do: Trong Azure SQL Database, MAXDOP được quản lý qua ALTER DATABASE SCOPED CONFIGURATION (ví dụ: ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 4;). Điều này áp dụng chỉ cho database db1, không ảnh hưởng toàn server. Đây là cách chính thức, an toàn và được Microsoft khuyến nghị từ phiên bản hiện tại (2024+), hỗ trợ cả Hyperscale và Serverless models. Không cần quyền sysadmin toàn server, chỉ cần quyền CONTROL trên database.
📋 Giải thích tất cả các phương án (đúng/sai):
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. Phân tích dựa trên hành vi thực tế của Azure SQL (không phải SQL Server on-prem).
-
❌ Connect to db1 and run the sp_configure command.
Sai vì:sp_configurelà stored procedure dùng cho SQL Server instance-level (on-premises/VM), không hỗ trợ trong Azure SQL Database (user databases). Khi chạy, nó sẽ báo lỗi "The configuration option 'max degree of parallelism' does not exist". Azure SQL không cho phép thay đổi server-wide configs từ user DB. -
❌ Connect to the master database of server1 and run the sp_configure command.
Sai vì: Ngay cả từ master database,sp_configurebị vô hiệu hóa trong Azure SQL do mô hình PaaS. Microsoft khóa các instance-level configs để tránh rủi ro. Lỗi tương tự: "sp_configure is not available in this version of SQL Server". Phải dùng Azure Portal/T-SQL scoped configs thay thế. -
❌ Configure the extended properties of db1.
Sai vì: Extended properties chỉ là metadata (dùngsp_addextendedproperty) để lưu chú thích/text tùy chỉnh (như mô tả cột/table), không liên quan đến performance settings như MAXDOP. Không có tác dụng gì đến parallelism, chỉ là "nhãn dán" dữ liệu. -
✅ Modify the database scoped configuration of db1.
Đúng vì: Đây là cách chuẩn sử dụng lệnhALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = <giá trị>;trực tiếp trên db1. Áp dụng ngay lập tức, scoped chỉ cho database đó, hỗ trợ giá trị từ 0-8 (hoặc tùy vCore). Lý tưởng cho workload cá nhân hóa.
📘 Tài liệu tham khảo (cập nhật mới nhất 2024-2026):
- Azure SQL Database Scoped Configurations – Hướng dẫn chính thức về MAXDOP.
- Resource Governance in Azure SQL – Chi tiết MAXDOP và limits.
- sp_configure in Azure SQL – Xác nhận không hỗ trợ.
💡 Lời khuyên từ Azure DBA: Để thực hiện, kết nối db1 qua SSMS/Azure Data Studio và chạy T-SQL. Kiểm tra bằng SELECT * FROM sys.database_scoped_configurations;. Nếu cần server-wide, dùng Azure Portal > Server Configurations! 🧩
You need to identify which database queries consume the most resources.
Which tool should you use?
- A Query Store
- B Metrics
- C Query Performance Insight
- D Alerts
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 tập trung vào tình huống bạn đang quản lý một cơ sở dữ liệu Azure Database for MySQL phiên bản 8.0. Nhiệm vụ cụ thể là xác định những truy vấn (queries) nào đang tiêu tốn nhiều tài nguyên nhất (như CPU, memory, I/O). Đây là vấn đề phổ biến trong việc tối ưu hóa hiệu suất database, giúp DBA phát hiện các truy vấn chậm hoặc "nóng" để can thiệp kịp thời. Azure Database for MySQL (Flexible Server) cung cấp các công cụ tích hợp để giám sát và phân tích performance ở mức query-level, đặc biệt phù hợp với phiên bản MySQL 8.0 hỗ trợ các tính năng phân tích nâng cao. 🛠️
🏆 Đáp án đúng: Query Performance Insight
✅ Lý do lựa chọn: Query Performance Insight là công cụ chuyên dụng của Azure Database for MySQL (Flexible Server) để phân tích và trực quan hóa hiệu suất truy vấn. Nó hiển thị top queries tiêu tốn tài nguyên nhất qua biểu đồ thời gian thực (CPU, memory, I/O), wait events, và lịch sử truy vấn trong 24 giờ đến 30 ngày. Công cụ này dựa trên dữ liệu telemetry từ database engine MySQL 8.0, giúp DBA dễ dàng xác định và tối ưu hóa queries "nặng". Đây là lựa chọn chính xác nhất theo tài liệu Azure cập nhật đến năm 2026 (phiên bản Flexible Server mới nhất).
🔍 Giải thích tất cả các phương án (đúng/sai)
-
❌ Query Store
Phương án này sai vì Query Store là tính năng của Azure SQL Database (dựa trên SQL Server), không áp dụng cho Azure Database for MySQL. Nó dùng để capture và lưu trữ lịch sử query plans, nhưng MySQL không hỗ trợ Query Store – thay vào đó dùng Performance Schema hoặc Query Performance Insight. Sử dụng sai ngữ cảnh sẽ không giúp xác định resource-consuming queries trên MySQL 8.0. -
❌ Metrics
Phương án này sai vì Metrics (trong Azure Monitor) chỉ cung cấp dữ liệu tổng quát như CPU usage, storage, connections ở mức server/database, không drill-down chi tiết đến từng query cụ thể. Nó hữu ích cho monitoring tổng thể nhưng không xác định "which database queries consume the most resources" – thiếu granularity ở query-level. -
✅ Query Performance Insight
Phương án này đúng như đã giải thích ở trên. Đây là tool chính thức cho Azure Database for MySQL Flexible Server (từ phiên bản 8.0), hiển thị top SQL text, execution stats, và recommendations. Hoàn hảo cho nhiệm vụ câu hỏi! 🏅 -
❌ Alerts
Phương án này sai vì Alerts (Azure Monitor Alerts) chỉ cảnh báo khi metrics vượt ngưỡng (ví dụ CPU >80%), không phân tích hoặc liệt kê queries cụ thể tiêu tốn tài nguyên. Nó là công cụ phản ứng (reactive) chứ không phải phân tích sâu (analytical) như yêu cầu.
📚 Tài liệu tham khảo (cập nhật mới nhất đến 2026):
- Azure Docs: Query Performance Insight cho MySQL Flexible Server – Chi tiết cách enable và sử dụng.
- Azure MySQL Monitoring Overview – So sánh các công cụ Metrics, Insights, Alerts.
- AWS không liên quan trực tiếp (có thể nhầm lẫn chủ đề), nhưng tương đương trên AWS RDS MySQL là Performance Insights.
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần demo hoặc cấu hình thực tế trên Azure Portal, hãy cho tôi biết nhé! 😊
You create a Transact-SQL statement to perform index maintenance on a database.
You need to schedule the statement to run once daily against each database by using Transact-SQL commands.
What should you use to schedule the statement?
- A an Azure function
- B a SQL Server Agent Job
- C an elastic job
- D Azure Automation
Xem giải thích
🧩 Giải thích nội dung câu hỏi
Câu hỏi mô tả tình huống bạn có một Azure subscription chứa 20 Azure SQL databases (các cơ sở dữ liệu Azure SQL PaaS). Bạn đã tạo một câu lệnh Transact-SQL (T-SQL) để thực hiện bảo trì chỉ mục (index maintenance) trên một cơ sở dữ liệu. Yêu cầu là lập lịch (schedule) câu lệnh này chạy một lần mỗi ngày trên tất cả 20 cơ sở dữ liệu, và phải sử dụng các lệnh T-SQL để thực hiện việc lập lịch.
📌 Điểm chính cần lưu ý:
- Phải chạy trên nhiều cơ sở dữ liệu (multi-database) trong Azure SQL (không phải SQL Server on-premises hoặc VM).
- Sử dụng T-SQL commands thuần túy, không phải ngôn ngữ lập trình khác như PowerShell hay code.
- Đây là tính năng native của Azure SQL Database để quản lý job trên quy mô lớn, đặc biệt phù hợp với elastic pools hoặc cross-database operations (cập nhật đến 2026: Elastic Jobs vẫn là lựa chọn chuẩn cho Azure SQL Hyperscale và General Purpose).
✅ Đáp án đúng: an elastic job
Lý do chọn: Elastic Job là tính năng tích hợp sẵn trong Azure SQL Database (không cần SQL Server instance riêng), cho phép tạo và lập lịch T-SQL scripts chạy trên nhiều cơ sở dữ liệu (target multiple databases) một cách tự động, scalable và resilient. Bạn có thể sử dụng T-SQL để định nghĩa job target, schedule qua SQL Agent-like trong Azure (qua elastic job agent database). Nó chạy daily dễ dàng và hỗ trợ retry/failover. Đây là giải pháp tối ưu nhất cho Azure SQL PaaS multi-DB maintenance đến năm 2026.
Cách triển khai ngắn gọn 🛠️:
- Tạo elastic job agent database.
- Định nghĩa job với T-SQL step:
EXEC jobs.sp_add_job. - Target:
sp_add_target_groupcho 20 DBs. - Schedule:
sp_add_job_schedulevới daily recurrence.
📋 Giải thích tất cả các phương án (đúng/sai)
-
❌ an Azure function
Sai vì: Azure Functions là dịch vụ serverless compute dùng để chạy code (C#, Python, PowerShell) theo trigger (timer), nhưng không hỗ trợ trực tiếp T-SQL commands native cho multi-database Azure SQL. Bạn phải dùng connection string và ADO.NET/ODBC để execute T-SQL, dẫn đến phức tạp, không scalable cho 20 DBs, và không phải "bằng T-SQL commands" thuần. Không phù hợp cho index maintenance daily. -
❌ a SQL Server Agent Job
Sai vì: SQL Server Agent chỉ có trên SQL Server on-premises, Azure VM (IAAS), hoặc Managed Instance, không hỗ trợ Azure SQL Database (PaaS). Bạn không thể tạo Agent Job trực tiếp trên Azure SQL DB để target multi-DB mà không có instance riêng, vi phạm yêu cầu T-SQL thuần túy. -
✅ an elastic job
Đúng vì: Như giải thích ở đáp án đúng trên. Đây là Elastic Jobs (từ Azure SQL preview 2020, stable đến 2026), thay thế SQL Agent cho PaaS. Hỗ trợ T-SQL steps, multi-target (databases, servers), scheduling (daily/weekly), monitoring qua portal/T-SQL. Hoàn hảo cho index rebuild/reorganize trên 20 DBs. -
❌ Azure Automation
Sai vì: Azure Automation dùng Runbooks (PowerShell/Python) để automate tasks, có thể connect Azure SQL qua modules, nhưng không dùng T-SQL commands trực tiếp để schedule job. Phải viết script phức tạp loop qua 20 DBs, kém native và không resilient như Elastic Jobs cho SQL maintenance.
📘 Tài liệu tham khảo (cập nhật 2026)
- Microsoft Docs: Create and Configure Elastic Jobs ✅ (Official guide with T-SQL samples).
- Azure SQL Elastic Jobs Tutorial 🛠️ (T-SQL commands chi tiết).
- Azure Updates 2025-2026 – Elastic Jobs vẫn là recommended cho multi-DB ops, tích hợp AI maintenance.
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần demo T-SQL script, hỏi thêm nhé!
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have two Azure SQL Database servers named Server1 and Server2. Each server contains an Azure SQL database named Database1.
You need to restore Database1 from Server1 to Server2. The solution must replace the existing Database1 on Server2.
Solution: From the Azure portal, you delete Database1 from Server2, and then you create a new database on Server2 by using the backup of Database1 from
Server1.
Does this meet the goal?
- A Yes
- B No
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 giải thích rõ ràng:
Câu hỏi thuộc dạng "Does this meet the goal?" trong các bài thi chứng chỉ (như AZ-104 hoặc DP-300 của Microsoft Azure), nơi có một tình huống cố định và nhiều giải pháp khác nhau. Tình huống: Bạn có hai Azure SQL Database servers (Server1 và Server2), mỗi server chứa một cơ sở dữ liệu Database1.
Mục tiêu (goal): Khôi phục (restore) Database1 từ Server1 sang Server2, đồng thời thay thế hoàn toàn Database1 hiện có trên Server2 (tức là xóa cái cũ và đưa cái mới vào).
Giải pháp đề xuất: Sử dụng Azure portal để:
- Xóa Database1 trên Server2.
- Tạo database mới trên Server2 bằng cách sử dụng backup của Database1 từ Server1.
Câu hỏi kiểm tra xem giải pháp này có đạt được mục tiêu không. Lưu ý: Azure SQL Database là dịch vụ PaaS (Platform as a Service), backups được Azure quản lý tự động (automatic backups, point-in-time restore - PITR), không giống SQL Server on-premises.
✅ Đáp án đúng: No
Lý do lựa chọn (bằng tiếng Việt):
Giải pháp KHÔNG đạt mục tiêu vì Azure SQL Database không hỗ trợ tạo database mới trực tiếp từ backup của database trên server khác qua Azure portal. Backups của Azure SQL là managed backups (tự động, không tải xuống file .bak), chỉ dùng cho PITR trong cùng logical server hoặc geo-restore (cross-region). Để thay thế DB giữa các server khác nhau, phải dùng phương pháp gián tiếp như Export/Import BACPAC (schema + data) hoặc Copy Database (nếu cùng subscription/region). Việc xóa DB cũ là đúng bước đầu, nhưng "sử dụng backup từ Server1" là không khả thi trực tiếp, dẫn đến thất bại. (Kiến thức cập nhật Azure SQL đến 2026: Không có tính năng mới hỗ trợ cross-server direct backup restore như vậy).
🛠️ Giải thích tất cả các phương án (giữ nguyên text gốc bằng tiếng Anh)
-
No ✅ ĐÚNG
❌ Phân tích lý do SAI (không đạt mục tiêu): Như đã giải thích, Azure SQL không cho phép "create a new database... by using the backup" từ server khác. Backups chỉ accessible trong cùng server cho PITR hoặc long-term retention (LTR) restore. Cross-server yêu cầu BACPAC hoặc DMS (Database Migration Service). Giải pháp này sẽ thất bại ở bước tạo DB mới, không thay thế được DB. -
Yes ❌ SAI
❌ Phân tích lý do SAI (không đạt mục tiêu): Phương án này giả định giải pháp hoạt động, nhưng thực tế không thể vì hạn chế của Azure SQL backups. Không có nút "Restore from backup of another server" trong portal. Nếu thử, portal chỉ cho PITR từ backups của chính DB đó hoặc copy từ cùng server.
📚 Tài liệu tham khảo (cập nhật mới nhất 2026)
- Azure SQL Database backups and restore 🛡️ (Xác nhận không hỗ trợ cross-server direct restore).
- Copy or move Azure SQL Database 📋 (Cách đúng: geo-replication hoặc BACPAC).
- Export/Import database (BACPAC) 🔄 (Phương pháp thay thế chuẩn).
- AZ-104 Exam guide (Microsoft Learn, 2026): Nhấn mạnh managed backups không export .bak.
💡 Lời khuyên từ Azure DBA: Để đạt goal đúng cách: Xóa DB cũ → Export BACPAC từ Server1 → Import BACPAC lên Server2. Hoặc dùng Active Geo-Replication nếu cần real-time sync! 🚀