Ngân hàng đề — Microsoft Administering Azure SQL
Tìm thấy 100 câu.
- A General Purpose
- B Hyperscale
- C Basic
- D Business Critical
Xem giải thích
Đáp án
D — Business Critical.
Vì sao đúng
⚠ Bốn bậc dịch vụ của Azure SQL Database: | Bậc | Lưu trữ | Đặc điểm | |---|---|---| | ⚠ Basic / Standard | ⚠ từ xa | ⚠ workload nhẹ, tiết kiệm | | ⚠ General Purpose | ⚠ từ xa (remote) | ⚠ cân bằng chi phí và hiệu năng | | ⚠ Business Critical | ⚠ SSD CỤC BỘ | ⚠ độ trễ thấp nhất, có replica đọc — đề này | | ⚠ Hyperscale | ⚠ kiến trúc phân tầng | ⚠ lên tới 100 TB, co giãn nhanh |
⚠ Business Critical
⚠ SSD gắn CỤC BỘ trên máy chủ
⚠ nhóm bốn node Always On
⚠ MỘT replica chỉ đọc MIỄN PHÍ
↓
⚠ Độ trễ IO thấp nhất
⚠ Hiệu năng DỰ ĐOÁN ĐƯỢC
⚠ SLA 99,995% (zone-redundant)
Vì sao các phương án khác sai
-
A (General Purpose) — ⚠ lưu trữ TỪ XA: ⚠ độ trễ cao hơn và ⚠ biến động hơn; ⚠ đủ cho phần lớn workload nhưng ⚠ không phải "hiệu năng dự đoán được cao nhất".
-
B (Hyperscale) — ⚠ mạnh về QUY MÔ và tốc độ khôi phục: ⚠ nhưng ⚠ độ trễ IO không thấp bằng Business Critical.
-
C (Basic) — ⚠ bậc thấp nhất: ⚠ cho môi trường phát triển và ứng dụng rất nhẹ.
Ghi nhớ
⚠ Chọn bậc dịch vụ — bảng phải thuộc: | Nhu cầu | Bậc | |---|---| | ⚠ Độ trễ IO thấp nhất, hiệu năng ổn định | ⚠ Business Critical | | ⚠ CSDL rất lớn (trên 4 TB), khôi phục nhanh | ⚠ Hyperscale | | ⚠ Cân bằng chi phí, workload thông thường | ⚠ General Purpose | | ⚠ Tải thất thường, muốn tự tạm dừng | ⚠ Serverless (trong General Purpose) | | ⚠ Dev/test | ⚠ Basic / Standard |
Từ khoá nhận diện:
"tài nguyên riêng, hiệu năng dự đoán được" → ⚠ Business Critical "CSDL nhiều TB" → ⚠ Hyperscale "tải thất thường, muốn tiết kiệm khi rảnh" → ⚠ Serverless "cân bằng chung" → ⚠ General Purpose
| ⚠ Business Critical — lợi ích kèm theo | Lợi ích |
|---|---|
| ⚠ MỘT replica chỉ đọc MIỄN PHÍ | ⚠ tách tải báo cáo mà không trả thêm |
| ⚠ Zone-redundant tuỳ chọn | ⚠ SLA 99,995% |
| ⚠ In-Memory OLTP | ⚠ CHỈ có ở bậc này |
| ⚠ RTO và RPO thấp nhất trong vùng | |
| ⚠ Đổi lại | ⚠ chi phí cao hơn General Purpose đáng kể |
| ⚠ Hyperscale — điều đáng biết | Điều |
|---|---|
| ⚠ Tách tính toán và lưu trữ thành nhiều tầng | |
| ⚠ Sao lưu dựa trên ảnh chụp — gần như tức thì | |
| ⚠ Khôi phục CSDL 50 TB trong PHÚT | |
| ⚠ Thêm replica đọc nhanh | |
| ⚠ Hạn chế | ⚠ một số tính năng không có; chuyển sang Hyperscale khó đảo ngược |
| ⚠ Serverless — khi nào phù hợp | Khi nào |
|---|---|
| ⚠ Tải thất thường, có khoảng thời gian không dùng | |
| ⚠ Môi trường dev/test | |
| ⚠ Tự TẠM DỪNG sau thời gian rảnh | ⚠ chỉ trả phí lưu trữ |
| ⚠ Nhược điểm | ⚠ có độ trễ khi "đánh thức" lại |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Nút thắt hiện tại là IO hay CPU | ⚠ quyết định có cần Business Critical không | | Có tận dụng replica đọc miễn phí không | | | Đã so sánh chi phí giữa các bậc chưa | |
Và tính năng của Business Critical thường bị bỏ quên dù đã trả tiền cho nó: replica chỉ đọc đi kèm miễn phí. Chỉ cần thêm ApplicationIntent=ReadOnly vào chuỗi kết nối là toàn bộ tải báo cáo rời khỏi CSDL chính.
- A Patching of SQL Server instances
- B Upgrading SQL Server versions
- C Centralized monitoring
- D Auto-tuning of Azure SQL Databases
Xem giải thích
Đáp án
A và C — Vá lỗi (patching) các instance SQL Server, và giám sát tập trung.
Vì sao đúng
⚠ Azure Arc đưa máy chủ NGOÀI Azure vào quản lý bằng công cụ Azure:
⚠ SQL Server tại chỗ, hoặc ở đám mây khác
↓ ⚠ cài Azure Arc agent
⚠ Xuất hiện như một tài nguyên Azure
↓
⚠ Quản bằng Portal, Policy, Monitor
⚠ như thể nó nằm trong Azure
| Năng lực Arc-enabled SQL Server | Nội dung |
|---|---|
| ⚠ Vá lỗi tự động | ⚠ áp dụng bản vá SQL Server |
| ⚠ Giám sát tập trung | ⚠ đưa vào Azure Monitor và Log Analytics |
| ⚠ Đánh giá best practice | |
| ⚠ Kiểm kê và quản giấy phép | |
| ⚠ Microsoft Defender for SQL | ⚠ cho cả máy chủ ngoài Azure |
| ⚠ Backup tập trung |
Vì sao các phương án khác sai
-
B (nâng cấp PHIÊN BẢN SQL Server) — ⚠ Arc quản VÁ LỖI, không tự nâng cấp phiên bản lớn: ⚠ nâng từ 2019 lên 2022 vẫn là quy trình riêng có kế hoạch.
-
D (auto-tuning cho Azure SQL Database) — ⚠ là tính năng của Azure SQL Database (PaaS): ⚠ Arc dành cho máy chủ NGOÀI Azure, ⚠ không liên quan.
Ghi nhớ
⚠ Họ Azure Arc — bảng phải thuộc: | Sản phẩm | Quản gì | |---|---| | ⚠ Arc-enabled servers | ⚠ máy chủ Windows/Linux ngoài Azure | | ⚠ Arc-enabled Kubernetes | ⚠ cụm K8s ở bất kỳ đâu | | ⚠ Arc-enabled SQL Server | ⚠ instance SQL Server ngoài Azure — đề này | | ⚠ Arc-enabled data services | ⚠ chạy Azure SQL MI hoặc PostgreSQL trên hạ tầng của bạn |
Từ khoá nhận diện:
"quản máy chủ NGOÀI Azure bằng công cụ Azure" → ⚠ Azure Arc "chạy dịch vụ Azure trên hạ tầng của mình" → ⚠ Arc-enabled data services "vá lỗi VM TRONG Azure" → ⚠ Azure Update Manager "vá SQL Server trên Azure VM" → ⚠ SQL IaaS Agent Extension
| ⚠ Vì sao Arc có giá trị | Giá trị |
|---|---|
| ⚠ MỘT bảng điều khiển cho mọi môi trường | ⚠ tại chỗ, Azure, đám mây khác |
| ⚠ Áp Azure Policy cho máy chủ ngoài Azure | |
| ⚠ Gom log về một Log Analytics workspace | |
| ⚠ Kiểm kê chính xác đang có bao nhiêu instance SQL | ⚠ nhiều tổ chức không biết |
| ⚠ Ca dùng phổ biến nhất | ⚠ quản trị và tuân thủ trong môi trường lai |
| ⚠ Ba mô hình quản lý SQL Server theo nơi chạy | Mô hình |
|---|---|
| ⚠ Azure SQL Database / MI | ⚠ Microsoft quản gần hết |
| ⚠ SQL trên Azure VM | ⚠ bạn quản, có IaaS Agent Extension hỗ trợ |
| ⚠ SQL ngoài Azure | ⚠ bạn quản, Arc đưa vào tầm nhìn của Azure |
| ⚠ Điểm chung | ⚠ càng ra xa Azure thì càng nhiều việc thuộc về bạn |
| ⚠ Điều kiện triển khai Arc | Điều kiện |
|---|---|
| ⚠ Máy chủ có kết nối ra Internet (hoặc qua proxy) | |
| ⚠ Cài Connected Machine agent | |
| ⚠ Đăng ký extension cho SQL Server | |
| ⚠ Chi phí | ⚠ một số năng lực miễn phí, một số tính phí (Defender, backup) |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Tổ chức có biết chính xác đang chạy bao nhiêu instance SQL không | ⚠ Arc trả lời được | | Máy chủ ngoài Azure có được vá đều không | | | Log của chúng có gom về một nơi không | |
Và câu hỏi mà Azure Arc trả lời được nhưng rất nhiều tổ chức không tự trả lời nổi: chúng ta đang chạy bao nhiêu instance SQL Server, phiên bản nào, vá tới đâu?. Không có bản kiểm kê đó thì mọi chương trình bảo mật đều có lỗ hổng không nhìn thấy.
- A Row-based partitioning
- B Range partitioning on date columns
- C List partitioning
- D Hash partitioning
Xem giải thích
Đáp án
B — Range partitioning trên cột ngày tháng.
Vì sao đúng
⚠ Phân vùng theo KHOẢNG NGÀY là mẫu chuẩn cho dữ liệu lớn: | Lợi ích | Nội dung | |---|---| | ⚠ Partition elimination | ⚠ truy vấn theo ngày chỉ đọc phân vùng cần | | ⚠ Bảo trì theo phân vùng | ⚠ rebuild index từng phân vùng | | ⚠ Sliding window | ⚠ thêm tháng mới, chuyển tháng cũ ra bảng lưu trữ — GẦN NHƯ TỨC THÌ | | ⚠ Nén theo phân vùng | ⚠ dữ liệu cũ nén mạnh hơn | | ⚠ Khớp với cách truy vấn thực tế | ⚠ hầu hết truy vấn có điều kiện thời gian |
⚠ Bảng nhiều TB
├── ⚠ Phân vùng 2024-01
├── ⚠ Phân vùng 2024-02
└── ⚠ Phân vùng 2024-03
↓
⚠ WHERE ngay >= '2024-03-01'
↓
⚠ CHỈ đọc phân vùng tháng 3
Vì sao các phương án khác sai
-
D (hash partitioning) — ⚠ rải đều nhưng MẤT partition elimination theo thời gian: ⚠ truy vấn theo khoảng ngày ⚠ phải đọc MỌI phân vùng; ⚠ và ⚠ SQL Server không hỗ trợ hash partitioning gốc như một số CSDL khác.
-
C (list partitioning) — ⚠ hợp khi phân theo tập giá trị rời rạc: ⚠ khu vực, mã quốc gia; ⚠ không hợp cho dữ liệu tăng theo thời gian.
-
A ("row-based partitioning") — ⚠ không phải thuật ngữ chuẩn của SQL Server.
Ghi nhớ
⚠ Phân vùng bảng — điều phải thuộc: | Thành phần | Vai trò | |---|---| | ⚠ Partition function | ⚠ định nghĩa các mốc ranh giới | | ⚠ Partition scheme | ⚠ ánh xạ phân vùng vào filegroup | | ⚠ Partitioned table/index | ⚠ bảng dùng scheme đó | | ⚠ SWITCH | ⚠ chuyển phân vùng ra/vào bảng khác — thao tác METADATA, tức thì |
Từ khoá nhận diện:
"bảng lớn, truy vấn theo thời gian" → ⚠ range partition theo ngày "xoá dữ liệu cũ nhanh" → ⚠ SWITCH phân vùng ra rồi TRUNCATE "phân theo khu vực" → ⚠ list partition "đối chiếu BigQuery" → ⚠ partition theo ngày + cluster
| ⚠ Sliding window — mẫu vận hành kinh điển | Mẫu |
|---|---|
| ⚠ Mỗi tháng: TÁCH phân vùng cũ nhất ra bảng lưu trữ | |
| ⚠ THÊM phân vùng mới cho tháng tới | |
⚠ SWITCH là thao tác metadata — gần như tức thì |
|
⚠ So với DELETE |
⚠ xoá vài trăm triệu dòng bằng DELETE mất hàng giờ và làm đầy log |
| ⚠ Đây là lợi ích | ⚠ thực dụng nhất của phân vùng |
| ⚠ Hiểu lầm phổ biến về phân vùng | Hiểu lầm |
|---|---|
| ⚠ "Phân vùng luôn làm truy vấn nhanh hơn" | ⚠ SAI — chỉ nhanh khi có partition elimination |
| ⚠ Truy vấn không lọc theo khoá phân vùng có thể CHẬM HƠN | |
| ⚠ Phân vùng chủ yếu để QUẢN LÝ, hiệu năng là lợi ích phụ | |
| ⚠ Muốn nhanh | ⚠ index đúng thường quan trọng hơn phân vùng |
| ⚠ Chọn khoá phân vùng | Chọn |
|---|---|
| ⚠ Cột xuất hiện trong ĐIỀU KIỆN LỌC của phần lớn truy vấn | |
| ⚠ Cột dùng để xoá/lưu trữ dữ liệu cũ | |
| ⚠ Thường là cột NGÀY | |
| ⚠ Số phân vùng vừa phải | ⚠ hàng nghìn phân vùng gây chi phí quản lý |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Truy vấn có lọc theo khoá phân vùng không | ⚠ nếu không thì phân vùng vô ích | | Execution plan có hiện partition elimination không | | | Có quy trình tự tạo phân vùng mới không | ⚠ quên là dữ liệu dồn vào phân vùng cuối |
Và sự cố kinh điển với bảng phân vùng theo ngày: không ai tạo phân vùng cho năm mới. Toàn bộ dữ liệu mới dồn vào phân vùng cuối cùng, và mọi lợi ích của phân vùng lặng lẽ biến mất.
- A Reduced complexity
- B Minimal downtime
- C No need for a backup
- D Faster migration speed
Xem giải thích
Đáp án
B — Gián đoạn tối thiểu (minimal downtime).
Vì sao đúng
⚠ So sánh hai chiến lược di trú: | Tiêu chí | ⚠ Offline | ⚠ Online | |---|---|---| | ⚠ Downtime | ⚠ bằng cả thời gian chép dữ liệu | ⚠ chỉ vài phút lúc cutover | | ⚠ Độ phức tạp | ⚠ THẤP | ⚠ CAO hơn | | ⚠ Tốc độ tổng thể | ⚠ NHANH hơn | ⚠ chậm hơn (đồng bộ liên tục) | | ⚠ Rủi ro | ⚠ thấp hơn | ⚠ nhiều thành phần hơn |
⚠ Offline
⚠ DỪNG ứng dụng → ⚠ chép → ⚠ mở lại
⚠ downtime = thời gian chép
⚠ Online
⚠ chép ban đầu (ứng dụng VẪN chạy)
⚠ đồng bộ thay đổi liên tục
⚠ CUTOVER trong vài phút
Vì sao các phương án khác sai
-
A (giảm độ phức tạp) — ⚠ NGƯỢC LẠI: ⚠ online phức tạp hơn vì phải theo dõi đồng bộ và chọn thời điểm cutover.
-
D (tốc độ di trú nhanh hơn) — ⚠ cũng ngược: ⚠ online thường tổng thể lâu hơn vì phải chạy đồng bộ song song.
-
C (không cần sao lưu) — ⚠ SAI và NGUY HIỂM: ⚠ LUÔN phải có sao lưu trước mọi cuộc di trú, ⚠ bất kể chiến lược nào.
Ghi nhớ
⚠ Chọn chiến lược di trú — bảng phải thuộc: | Tình huống | Chiến lược | |---|---| | ⚠ Có cửa sổ bảo trì đủ dài | ⚠ offline — đơn giản hơn | | ⚠ Hệ thống 24/7, downtime rất đắt | ⚠ online | | ⚠ CSDL nhỏ, chép nhanh | ⚠ offline | | ⚠ CSDL rất lớn | ⚠ online, vì chép offline sẽ mất quá lâu |
Từ khoá nhận diện:
"gián đoạn tối thiểu" → ⚠ online migration "đơn giản, có cửa sổ bảo trì" → ⚠ offline "công cụ thực hiện" → ⚠ Azure Database Migration Service "đánh giá trước" → ⚠ Data Migration Assistant
| ⚠ Quy trình cutover của di trú online | Bước |
|---|---|
| ⚠ 1. Theo dõi tới khi độ trễ đồng bộ gần bằng 0 | |
| ⚠ 2. Dừng ghi vào hệ thống nguồn | |
| ⚠ 3. Chờ đồng bộ nốt phần cuối | |
| ⚠ 4. Đối chiếu số lượng bản ghi | |
| ⚠ 5. Chuyển ứng dụng sang đích | |
| ⚠ 6. Theo dõi sát vài giờ đầu | |
| ⚠ Bước 4 | ⚠ đừng bỏ qua — kiểm chứng trước khi cam kết |
| ⚠ Kế hoạch quay lui (rollback) | Kế hoạch |
|---|---|
| ⚠ LUÔN phải có, và phải viết ra trước | |
| ⚠ Giữ hệ thống nguồn ở trạng thái khôi phục được | |
| ⚠ Xác định "điểm không quay lại" | |
| ⚠ Đặt tiêu chí rõ ràng để quyết định quay lui | |
| ⚠ Sai lầm phổ biến | ⚠ chỉ có kế hoạch tiến, không có kế hoạch lùi |
| ⚠ Điều luôn phải làm dù chọn chiến lược nào | Việc |
|---|---|
| ⚠ SAO LƯU đầy đủ trước khi bắt đầu | |
| ⚠ Kiểm chứng bản sao lưu khôi phục được | |
| ⚠ Kiểm thử ứng dụng trên môi trường đích trước | |
| ⚠ Diễn tập cutover trên bản sao |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Downtime chấp nhận được là bao lâu | ⚠ quyết định chiến lược | | Đã có kế hoạch quay lui chưa | | | Đã diễn tập cutover chưa | |
Và điều đáng nhớ khi cân nhắc di trú trực tuyến: nó mua sự liên tục bằng độ phức tạp. Nếu hệ thống chịu được vài giờ dừng vào cuối tuần, thì offline vừa rẻ hơn vừa ít chỗ hỏng hơn.
- A Azure SQL Data Sync
- B Azure Data Factory
- C Azure Site Recovery
- D Azure Blob Storage
Xem giải thích
Đáp án
A — Azure SQL Data Sync.
Ghi nhớ về chất lượng câu hỏi
⚠ Đây là câu THỨ BA về SQL Data Sync trong cùng lô.
| Câu | Góc hỏi |
|---|---|
| ⚠ #17418 | ⚠ Data Sync làm được những việc gì |
| ⚠ #17427 | ⚠ dịch vụ nào giữ hai Azure SQL đồng bộ |
| ⚠ #17451 (câu này) | ⚠ đồng bộ giữa SQL Server TẠI CHỖ và Azure SQL |
| ⚠ Cùng khoá | ⚠ SQL Data Sync |
Vì sao đúng
⚠ Data Sync hỗ trợ member là SQL Server tại chỗ:
⚠ HUB: Azure SQL Database (BẮT BUỘC)
↕
⚠ MEMBER: SQL Server tại chỗ
⚠ cần cài Data Sync Agent
↕
⚠ MEMBER: Azure SQL Database khác
↓
⚠ Đồng bộ HAI CHIỀU theo lịch
⚠ Đây là kịch bản lai điển hình mà Data Sync được thiết kế cho.
Vì sao các phương án khác sai
-
B (Azure Data Factory) — ⚠ làm được nhưng MỘT CHIỀU: ⚠ là công cụ ETL, ⚠ không phải cơ chế đồng bộ hai chiều liên tục.
-
C (Azure Site Recovery) — ⚠ khôi phục thảm hoạ cho MÁY ẢO: ⚠ nhân bản cả máy chủ, ⚠ không đồng bộ dữ liệu ở mức bảng.
-
D (Azure Blob Storage) — ⚠ kho lưu trữ đối tượng, không liên quan.
Ghi nhớ
⚠ Đồng bộ dữ liệu lai — bảng phải thuộc: | Nhu cầu | Giải pháp | |---|---| | ⚠ Đồng bộ HAI CHIỀU, có tại chỗ | ⚠ SQL Data Sync | | ⚠ Nhân bản MỘT CHIỀU tới Azure | ⚠ Transactional replication, Managed Instance link | | ⚠ ETL có biến đổi | ⚠ Data Factory | | ⚠ Di trú một lần | ⚠ Database Migration Service | | ⚠ DR cho máy ảo | ⚠ Azure Site Recovery |
Từ khoá nhận diện:
"đồng bộ hai chiều tại chỗ ↔ Azure" → ⚠ SQL Data Sync "nhân bản liên tục sang Managed Instance" → ⚠ MI link "chép và biến đổi dữ liệu" → ⚠ Data Factory "DR cho cả máy chủ" → ⚠ Site Recovery
| ⚠ Data Sync Agent — điều kiện tại chỗ | Điều kiện |
|---|---|
| ⚠ Cài agent trên máy chủ tại chỗ | |
| ⚠ Agent kết nối RA Azure | ⚠ không cần mở cổng vào từ Internet |
| ⚠ Cần tài khoản dịch vụ có quyền trên CSDL | |
| ⚠ Ưu điểm | ⚠ không đòi VPN hay ExpressRoute |
| ⚠ Hạn chế Data Sync cần biết trước | Hạn chế |
|---|---|
| ⚠ Bảng PHẢI có khoá chính | |
| ⚠ Độ trễ tối thiểu 5 phút | |
| ⚠ Không hỗ trợ mọi kiểu dữ liệu | |
| ⚠ Thay đổi lược đồ phải cấu hình lại nhóm đồng bộ | |
| ⚠ Có chi phí hiệu năng do trigger theo dõi thay đổi | |
| ⚠ Với dữ liệu rất lớn | ⚠ cân nhắc replication truyền thống |
| ⚠ Managed Instance link — lựa chọn mới hơn | Đặc điểm |
|---|---|
| ⚠ Dùng công nghệ Always On | |
| ⚠ Nhân bản gần THỜI GIAN THỰC từ SQL Server sang MI | |
| ⚠ Dùng cho DR hoặc di trú dần | |
| ⚠ MỘT CHIỀU (có thể chuyển vai trò) | |
| ⚠ So với Data Sync | ⚠ độ trễ thấp hơn nhiều, nhưng không phải hai chiều theo bảng |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Có thật sự cần ghi ở cả hai nơi không | ⚠ một chiều đơn giản hơn nhiều | | Mọi bảng đồng bộ có khoá chính không | | | Độ trễ 5 phút có chấp nhận được không | |
Và câu hỏi nên đặt trước khi dựng bất kỳ cơ chế đồng bộ lai nào: đây là trạng thái tạm thời hay vĩnh viễn?. Nếu là bước đệm trong quá trình di trú thì rất hợp lý; nếu định duy trì mãi thì cái giá về vận hành sẽ tích luỹ theo năm tháng.
After migrating an SQL Server database to an Azure SQL Managed Instance, users report slower query performance on the cloud platform. Which feature should you utilize to help identify performance bottlenecks in Azure SQL Managed Instance?
- A Azure Advisor
- B Query Performance Insight
- C Azure SQL Analytics
- D Azure Monitor logs
Xem giải thích
Đáp án
B — Query Performance Insight.
Ghi nhớ về chất lượng câu hỏi
⚠ Query Performance Insight là tính năng trên cổng Azure dành cho Azure SQL DATABASE.
| Môi trường | Công cụ tương ứng |
|---|---|
| ⚠ Azure SQL Database | ⚠ Query Performance Insight (giao diện Portal) |
| ⚠ Managed Instance | ⚠ Query Store trực tiếp, hoặc SQL Insights |
⚠ KHÔNG sửa khoá — ⚠ trong bốn phương án, ⚠ đây vẫn là công cụ chuyên về hiệu năng TRUY VẤN, ⚠ và ⚠ nguồn dữ liệu của nó là Query Store — thứ Managed Instance cũng có.
⚠ Cách nhớ an toàn: ⚠ Query Store là nền tảng chung; ⚠ Query Performance Insight chỉ là giao diện trực quan trên đó.
Vì sao đúng (về mặt khái niệm)
⚠ Công cụ này trả lời đúng câu hỏi của đề: | Xem được | Nội dung | |---|---| | ⚠ Truy vấn tốn CPU nhất | | | ⚠ Truy vấn tốn thời gian nhất | | | ⚠ Truy vấn tốn IO nhất | | | ⚠ Xu hướng theo thời gian | ⚠ so sánh trước và sau di trú | | ⚠ Chi tiết từng truy vấn | |
⚠ Với tình huống "chậm hơn sau khi di trú" — ⚠ đây chính là nơi bắt đầu.
Vì sao các phương án khác sai
-
C ("Azure SQL Analytics") — ⚠ giải pháp giám sát cũ trong Log Analytics: ⚠ đã được thay bằng SQL Insights và Azure Monitor; ⚠ và ⚠ nó thiên về tổng thể chứ không phải một truy vấn.
-
D (Azure Monitor logs) — ⚠ lưu và truy vấn log: ⚠ cần biết KQL, ⚠ không phải công cụ chuyên hiệu năng truy vấn.
-
A (Azure Advisor) — ⚠ khuyến nghị chung về chi phí, bảo mật, hiệu năng ở mức TÀI NGUYÊN: ⚠ không phân tích từng truy vấn.
Ghi nhớ
⚠ Chẩn đoán "chậm hơn sau khi di trú" — bảng phải thuộc: | Nguyên nhân | Cách kiểm tra | |---|---| | ⚠ THỐNG KÊ chưa cập nhật | ⚠ UPDATE STATISTICS sau di trú | | ⚠ Compatibility level đổi | ⚠ bộ tối ưu mới chọn kế hoạch khác | | ⚠ Bậc dịch vụ không đủ tài nguyên | ⚠ so sánh với máy chủ cũ | | ⚠ Độ trễ mạng từ ứng dụng tới CSDL | ⚠ ứng dụng còn ở tại chỗ? | | ⚠ Index chưa được rebuild | | | ⚠ Nguyên nhân số một | ⚠ thống kê và compatibility level |
Từ khoá nhận diện:
"truy vấn nào tốn tài nguyên nhất" → ⚠ Query Performance Insight / Query Store "khuyến nghị chung về tài nguyên" → ⚠ Azure Advisor "phân tích workload sâu" → ⚠ SQL Insights "chậm sau khi di trú" → ⚠ kiểm tra thống kê và compatibility level TRƯỚC
| ⚠ Compatibility level — thủ phạm thầm lặng | Vấn đề |
|---|---|
| ⚠ Di trú thường nâng compatibility level | |
| ⚠ Bộ tối ưu (cardinality estimator) mới hoạt động khác | |
| ⚠ Một số truy vấn nhanh hơn, một số CHẬM ĐI | |
| ⚠ Cách xử lý | ⚠ hạ compatibility level tạm thời, rồi nâng dần và kiểm thử |
| ⚠ Hoặc | ⚠ bật Query Store hints, hoặc FORCE_LAST_GOOD_PLAN |
| ⚠ Độ trễ mạng — nguyên nhân hay bị bỏ qua | Vấn đề |
|---|---|
| ⚠ Ứng dụng còn tại chỗ, CSDL đã lên đám mây | |
| ⚠ Mỗi lần gọi CSDL thêm hàng chục mili giây | |
| ⚠ Ứng dụng gọi nhiều lần nhỏ (chatty) bị ảnh hưởng nặng | |
| ⚠ Cách chữa | ⚠ chuyển ứng dụng lên cùng vùng, hoặc gộp lời gọi |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Đã cập nhật thống kê sau di trú chưa | ⚠ việc đầu tiên | | Compatibility level là bao nhiêu | | | Ứng dụng có cùng vùng với CSDL không | |
Và nguyên nhân phổ biến nhất khiến truy vấn chậm đi ngay sau khi di trú, dù cấu hình mới mạnh hơn: thống kê chưa được cập nhật. Một lệnh UPDATE STATISTICS thường giải quyết được nhiều hơn cả một lần nâng bậc dịch vụ.
- A SQL Authentication
- B Entra ID Password
- C Entra ID Integrated
- D Entra ID Token-based
Xem giải thích
Đáp án
D — Xác thực dựa trên token của Entra ID (Entra ID Token-based).
Ghi nhớ về chất lượng câu hỏi
⚠ Cả ba phương thức Entra ID đều hỗ trợ đăng nhập bằng NHÓM.
| Phương thức | Có hỗ trợ nhóm |
|---|---|
| ⚠ Entra ID Password | ⚠ CÓ |
| ⚠ Entra ID Integrated | ⚠ CÓ |
| ⚠ Entra ID Token-based | ⚠ CÓ — khoá của đề |
| ⚠ SQL Authentication | ⚠ KHÔNG — chỉ tài khoản riêng lẻ |
⚠ Điểm chung: ⚠ mọi phương thức Entra ID đều cho phép ⚠ tạo user trong CSDL từ một NHÓM, ⚠ và ⚠ thành viên nhóm kế thừa quyền.
⚠ KHÔNG sửa khoá — ⚠ phương án duy nhất chắc chắn sai là ⚠ SQL Authentication.
Vì sao đúng
⚠ Cơ chế đăng nhập theo nhóm Entra ID:
CREATE USER [Nhom-BaoCao] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [Nhom-BaoCao];
⚠ Người dùng thuộc nhóm đăng nhập
↓
⚠ Token chứa thông tin NHÓM
↓
⚠ SQL Database khớp với user tạo từ nhóm
↓
⚠ Kế thừa quyền của nhóm
⚠ Lợi ích lớn nhất: ⚠ thêm/bớt người chỉ cần làm ở Entra ID, ⚠ không đụng tới CSDL.
Vì sao các phương án khác sai
-
A (SQL Authentication) — ⚠ CHẮC CHẮN SAI: ⚠ tài khoản SQL truyền thống ⚠ không biết gì về nhóm Entra ID; ⚠ phải tạo và quản từng tài khoản trong CSDL.
-
B (Entra ID Password) và C (Entra ID Integrated) — ⚠ cũng hỗ trợ nhóm: ⚠ khác biệt giữa chúng là cách lấy token, không phải khả năng dùng nhóm.
Ghi nhớ
⚠ Các phương thức xác thực Azure SQL — bảng phải thuộc: | Phương thức | Đặc điểm | |---|---| | ⚠ SQL Authentication | ⚠ tài khoản trong CSDL, quản mật khẩu riêng | | ⚠ Entra ID Password | ⚠ nhập tài khoản Entra ID và mật khẩu | | ⚠ Entra ID Integrated | ⚠ đăng nhập một lần từ máy đã gia nhập miền | | ⚠ Entra ID Universal with MFA | ⚠ hỗ trợ xác thực đa yếu tố | | ⚠ Entra ID Token-based | ⚠ ứng dụng lấy token rồi truyền vào | | ⚠ Managed Identity | ⚠ KHÔNG có mật khẩu — tốt nhất cho ứng dụng |
Từ khoá nhận diện:
"kế thừa quyền từ nhóm" → ⚠ bất kỳ phương thức Entra ID nào "ứng dụng xác thực không cần mật khẩu" → ⚠ Managed Identity "tài khoản riêng trong CSDL" → ⚠ SQL Authentication "bắt buộc MFA" → ⚠ Entra ID với MFA
| ⚠ Vì sao nên bỏ SQL Authentication | Lý do |
|---|---|
| ⚠ Mật khẩu nằm trong chuỗi kết nối | |
| ⚠ Không có MFA | |
| ⚠ Không gắn với vòng đời nhân sự | ⚠ người nghỉ việc vẫn đăng nhập được |
| ⚠ Không dùng được Conditional Access | |
| ⚠ Nên chuyển sang | ⚠ Entra ID cho người, Managed Identity cho ứng dụng |
| ⚠ Managed Identity — lựa chọn tốt nhất cho ứng dụng | Vì sao |
|---|---|
| ⚠ KHÔNG có mật khẩu hay khoá nào | |
| ⚠ Azure tự cấp và xoay vòng thông tin xác thực | |
| ⚠ Gắn với tài nguyên (VM, App Service, Function) | |
| ⚠ Tài nguyên bị xoá thì danh tính cũng mất | |
| ⚠ Đối chiếu Google Cloud | ⚠ giống service account gắn vào VM |
| ⚠ Quản quyền bằng nhóm — thực hành tốt | Thực hành |
|---|---|
| ⚠ Tạo nhóm Entra ID theo VAI TRÒ CÔNG VIỆC | |
| ⚠ Tạo user CSDL từ nhóm, không từ cá nhân | |
| ⚠ Nghỉ việc: gỡ khỏi nhóm ở Entra ID là xong | |
| ⚠ Kiểm toán: nhìn nhóm là hiểu ai có quyền gì | |
| ⚠ Không dùng nhóm | ⚠ danh sách user trong CSDL phình ra và không ai dọn |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Còn tài khoản SQL Authentication nào không | | | Quyền cấp cho nhóm hay cho từng người | | | Ứng dụng có dùng Managed Identity chưa | |
Và lợi ích thực dụng nhất của việc gắn quyền CSDL vào nhóm Entra ID: quy trình nghỉ việc chỉ còn một bước. Gỡ người đó khỏi nhóm, và mọi quyền truy cập cơ sở dữ liệu biến mất theo — không cần ai nhớ tới danh sách người dùng trong từng CSDL.
You need to encrypt specific columns containing sensitive data within a SQL Server database. Which of the following technologies should you implement?
-
A
Transparent Data Encryption (TDE)
-
B
Always Encrypted
-
C
Dynamic Data Masking
-
D
Row-Level Security
Xem giải thích
Đáp án
B — Always Encrypted.
Ghi nhớ về chất lượng câu hỏi
⚠ Câu này GẦN TRÙNG với #17428 trong cùng lô.
| Câu | Hỏi gì |
|---|---|
| ⚠ #17428 | ⚠ phương pháp nào mã hoá TRƯỚC KHI dữ liệu rời máy khách |
| ⚠ #17454 (câu này) | ⚠ công nghệ nào mã hoá CỘT cụ thể chứa dữ liệu nhạy cảm |
| ⚠ Cùng khoá | ⚠ Always Encrypted |
| ⚠ Nhớ hai đặc điểm | ⚠ mã hoá TẠI CLIENT + theo từng CỘT |
Vì sao đúng
⚠ Always Encrypted là công nghệ DUY NHẤT mã hoá theo CỘT: | Đặc điểm | Nội dung | |---|---| | ⚠ Phạm vi | ⚠ từng CỘT được chọn | | ⚠ Nơi mã hoá | ⚠ driver ở phía CLIENT | | ⚠ Server thấy gì | ⚠ chỉ thấy bản mã | | ⚠ DBA đọc được | ⚠ KHÔNG |
⚠ Chọn cột: SoCanCuoc, SoTheTinDung
↓
⚠ Driver mã hoá tại ứng dụng
↓
⚠ CSDL lưu bản mã
↓
⚠ Cột KHÁC vẫn bình thường
Vì sao các phương án khác sai
-
A (TDE) — ⚠ mã hoá CẢ CSDL ở mức tệp: ⚠ không chọn được cột; ⚠ và ⚠ người dùng hợp lệ vẫn thấy dữ liệu thật.
-
C (Dynamic Data Masking) — ⚠ CHE khi hiển thị, KHÔNG mã hoá: ⚠ dữ liệu thật vẫn nằm nguyên.
-
D (Row-Level Security) — ⚠ lọc DÒNG theo danh tính, không mã hoá gì.
Ghi nhớ
⚠ Bốn công nghệ bảo vệ dữ liệu — phân biệt theo phạm vi: | Công nghệ | Phạm vi | Có mã hoá | |---|---|---| | ⚠ TDE | ⚠ cả CSDL (mức tệp) | ⚠ CÓ | | ⚠ Always Encrypted | ⚠ từng CỘT | ⚠ CÓ, tại client | | ⚠ Dynamic Data Masking | ⚠ từng CỘT (hiển thị) | ⚠ KHÔNG | | ⚠ Row-Level Security | ⚠ từng DÒNG | ⚠ KHÔNG |
Từ khoá nhận diện:
"mã hoá CỘT cụ thể" → ⚠ Always Encrypted "mã hoá cả CSDL, trong suốt" → ⚠ TDE "che khi hiển thị" → ⚠ DDM "lọc dòng theo người dùng" → ⚠ RLS
| ⚠ Chọn cột nào để Always Encrypted | Chọn |
|---|---|
| ⚠ Cột CHỈ đọc ra để hiển thị | ⚠ số căn cước, số thẻ |
| ⚠ Cột không cần LIKE hay so sánh khoảng | |
| ⚠ Cột có yêu cầu tuân thủ bắt buộc | |
| ⚠ KHÔNG chọn | ⚠ cột dùng để tìm kiếm, sắp xếp, tính toán |
| ⚠ Vì | ⚠ những thao tác đó sẽ không còn làm được |
| ⚠ Quy trình triển khai Always Encrypted | Bước |
|---|---|
| ⚠ 1. Xác định cột nhạy cảm | ⚠ dùng Data Classification |
| ⚠ 2. Tạo Column Master Key | ⚠ trong Key Vault |
| ⚠ 3. Tạo Column Encryption Key | |
| ⚠ 4. Mã hoá cột | ⚠ thao tác này ĐỌC và GHI LẠI toàn bộ dữ liệu |
| ⚠ 5. Cập nhật chuỗi kết nối của ứng dụng | ⚠ Column Encryption Setting=Enabled |
| ⚠ 6. Kiểm thử KỸ mọi truy vấn |
| ⚠ Ai cần truy cập CMK | Ai |
|---|---|
| ⚠ Ứng dụng: quyền GIẢI MÃ trên Key Vault | |
| ⚠ Người vận hành CSDL: KHÔNG cần và KHÔNG NÊN có | |
| ⚠ Đây chính là | ⚠ cách tách quyền DBA khỏi dữ liệu |
| ⚠ Nếu DBA cũng có quyền Key Vault | ⚠ thì lợi ích chính đã mất |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Truy vấn hiện tại có dùng LIKE trên cột đó không | | | Ai có quyền trên Column Master Key | ⚠ DBA KHÔNG nên có | | Ứng dụng đã dùng driver hỗ trợ chưa | |
Và điều làm Always Encrypted mất hết ý nghĩa dù đã cấu hình đúng: cấp cho DBA quyền truy cập Column Master Key trong Key Vault. Toàn bộ mục đích của công nghệ này là tách hai vai trò đó ra.
- A HTTPS
- B SFTP
- C TLS
- D SSH
Xem giải thích
Đáp án
C — TLS.
Ghi nhớ về chất lượng câu hỏi
⚠ Đề nói TLS mã hoá "cả khi TRUYỀN và khi LƯU TRỮ" — điều này KHÔNG ĐÚNG.
| Trạng thái dữ liệu | Công nghệ đúng |
|---|---|
| ⚠ Khi TRUYỀN (in transit) | ⚠ TLS — đúng |
| ⚠ Khi LƯU TRỮ (at rest) | ⚠ TDE, KHÔNG phải TLS |
⚠ KHÔNG sửa khoá — ⚠ trong bốn phương án, ⚠ TLS vẫn là giao thức đúng cho kết nối tới Azure SQL Database.
⚠ Cách hiểu đúng: ⚠ Azure SQL bảo vệ dữ liệu bằng ⚠ TLS khi truyền + ⚠ TDE khi lưu, ⚠ hai công nghệ khác nhau, cả hai đều bật mặc định.
Vì sao đúng (phần kết nối)
⚠ TLS bảo vệ kết nối tới Azure SQL Database:
⚠ Ứng dụng
↓ ⚠ TLS 1.2 trở lên
⚠ Azure SQL Database
↓
⚠ Chống nghe lén và sửa đổi trên đường
| Thiết lập | Nội dung |
|---|---|
⚠ Encrypt=True |
⚠ bắt buộc mã hoá kết nối |
⚠ TrustServerCertificate=False |
⚠ KIỂM chứng chỉ — chống tấn công xen giữa |
| ⚠ Minimal TLS version | ⚠ đặt tối thiểu 1.2 ở mức server |
| ⚠ Azure SQL | ⚠ BẮT BUỘC mã hoá kết nối, không tắt được |
Vì sao các phương án khác sai
-
A (HTTPS) — ⚠ là HTTP CHẠY TRÊN TLS: ⚠ dùng cho web, ⚠ không phải giao thức kết nối CSDL (SQL dùng TDS trên TLS).
-
B (SFTP) — ⚠ truyền TỆP qua SSH: ⚠ không phải giao thức CSDL.
-
D (SSH) — ⚠ truy cập dòng lệnh từ xa: ⚠ không dùng để kết nối Azure SQL Database.
Ghi nhớ
⚠ Ba trạng thái dữ liệu và cách bảo vệ — bảng phải thuộc: | Trạng thái | Công nghệ | |---|---| | ⚠ In transit (đang truyền) | ⚠ TLS | | ⚠ At rest (đang lưu) | ⚠ TDE, Always Encrypted | | ⚠ In use (đang xử lý) | ⚠ Confidential Computing, secure enclaves | | ⚠ Đừng lẫn | ⚠ TLS KHÔNG bảo vệ dữ liệu khi lưu |
Từ khoá nhận diện:
"mã hoá kết nối" → ⚠ TLS "mã hoá dữ liệu trên đĩa" → ⚠ TDE "mã hoá cột tại client" → ⚠ Always Encrypted "bảo vệ cả khi đang xử lý" → ⚠ Confidential Computing
⚠ Bẫy TrustServerCertificate=True |
Bẫy |
|---|---|
| ⚠ Vẫn MÃ HOÁ nhưng KHÔNG kiểm chứng chỉ | |
| ⚠ Mở cửa cho tấn công XEN GIỮA | |
| ⚠ Hay bị bật để "cho chạy được" | ⚠ rồi ở lại vĩnh viễn |
| ⚠ Đúng phải là | ⚠ Encrypt=True; TrustServerCertificate=False |
| ⚠ Phiên bản TLS | Phiên bản |
|---|---|
| ⚠ TLS 1.0 và 1.1 | ⚠ ĐÃ LỖI THỜI, nên chặn |
| ⚠ TLS 1.2 | ⚠ tối thiểu cho PCI DSS |
| ⚠ TLS 1.3 | ⚠ mới nhất, nhanh hơn |
| ⚠ Azure SQL | ⚠ đặt được "minimal TLS version" ở mức server |
| ⚠ Bảo vệ toàn diện cho Azure SQL | Lớp |
|---|---|
| ⚠ TLS cho kết nối | ⚠ bắt buộc, có sẵn |
| ⚠ TDE cho dữ liệu lưu | ⚠ bật mặc định |
| ⚠ Always Encrypted cho cột cực nhạy cảm | |
| ⚠ Private Endpoint để không đi qua Internet | |
| ⚠ Entra ID cho xác thực | |
| ⚠ Nhiều lớp | ⚠ mỗi lớp chặn một loại mối đe doạ khác nhau |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Chuỗi kết nối có TrustServerCertificate=True không | ⚠ nên là False | | Minimal TLS version đặt bao nhiêu | | | Có hiểu rõ TLS không thay được TDE không | |
Và một cách nhớ gọn để không bao giờ lẫn: TLS bảo vệ dữ liệu trên đường đi, TDE bảo vệ dữ liệu khi nó đã tới nơi. Hai công nghệ khác nhau, chặn hai mối đe doạ khác nhau, và không cái nào thay được cái nào.
- A Dynamic Data Masking
- B Transparent Data Encryption (TDE)
- C SQL Server Profiler
- D Database Auditing
Xem giải thích
Đáp án
D — Database Auditing.
Ghi nhớ về chất lượng câu hỏi
⚠ Câu này GẦN TRÙNG với #17414 ở lô trước.
| Câu | Hỏi gì |
|---|---|
| ⚠ #17414 (lô 159) | ⚠ tính năng nào ghi lại ai làm gì, khi nào |
| ⚠ #17456 (câu này) | ⚠ tính năng nào kiểm toán SELECT, INSERT, UPDATE, DELETE |
| ⚠ Cùng khoá | ⚠ Auditing |
Vì sao đúng
⚠ Auditing ghi lại các NHÓM HÀNH ĐỘNG cụ thể: | Nhóm hành động | Ghi gì | |---|---| | ⚠ SELECT | ⚠ ai đọc dữ liệu nào | | ⚠ INSERT, UPDATE, DELETE | ⚠ ai thay đổi dữ liệu | | ⚠ EXECUTE | ⚠ chạy thủ tục | | ⚠ SCHEMA_OBJECT_CHANGE_GROUP | ⚠ đổi cấu trúc | | ⚠ FAILED_DATABASE_AUTHENTICATION_GROUP | ⚠ đăng nhập thất bại |
⚠ Cấu hình audit ở mức server hoặc CSDL
↓
⚠ Chọn nhóm hành động cần ghi
↓
⚠ Chọn đích: Storage / Log Analytics / Event Hub
↓
⚠ Truy vấn và cảnh báo trên nhật ký
Vì sao các phương án khác sai
-
C (SQL Server Profiler) — ⚠ công cụ theo dõi ĐÃ KHAI TỬ: ⚠ dùng để gỡ lỗi tạm thời, ⚠ không phải cơ chế kiểm toán tuân thủ; ⚠ và ⚠ không dùng được với Azure SQL Database.
-
A (Dynamic Data Masking) — ⚠ che giá trị khi hiển thị: ⚠ không ghi lại gì.
-
B (TDE) — ⚠ mã hoá tệp dữ liệu: ⚠ không ghi lại gì.
Ghi nhớ
⚠ Auditing cho tuân thủ — điểm phải thuộc: | Điểm | Nội dung | |---|---| | ⚠ Cấp áp dụng | ⚠ server (mọi CSDL) hoặc từng CSDL | | ⚠ Ba đích lưu | ⚠ Storage Account, Log Analytics, Event Hub | | ⚠ Ghi cả câu lệnh và tham số | | | ⚠ Ghi IP nguồn và danh tính | | | ⚠ Bật cả hai cấp | ⚠ sẽ ghi TRÙNG — chọn một |
Từ khoá nhận diện:
"kiểm toán SELECT/INSERT/UPDATE/DELETE" → ⚠ Database Auditing "phát hiện tấn công" → ⚠ Microsoft Defender for SQL "gỡ lỗi sự kiện tạm thời" → ⚠ Extended Events "che dữ liệu hiển thị" → ⚠ Dynamic Data Masking
| ⚠ Cân nhắc khối lượng khi audit SELECT | Cân nhắc |
|---|---|
| ⚠ Ghi mọi SELECT tạo khối lượng RẤT LỚN | |
| ⚠ Ảnh hưởng hiệu năng và chi phí lưu trữ | |
| ⚠ Nên giới hạn theo bảng nhạy cảm nếu được | |
| ⚠ Cân bằng | ⚠ đủ để trả lời câu hỏi kiểm toán, không nhiều tới mức không ai đọc nổi |
| ⚠ Bảo vệ chính nhật ký kiểm toán | Bảo vệ |
|---|---|
| ⚠ Lưu ở Storage Account RIÊNG | |
| ⚠ Đặt immutable policy để không ai xoá được | |
| ⚠ Quyền truy cập rất hạn chế | |
| ⚠ Bật audit cho chính storage đó | |
| ⚠ Lý do | ⚠ kẻ tấn công thành công sẽ tìm cách xoá dấu vết |
| ⚠ Kết hợp với Data Classification | Kết hợp |
|---|---|
| ⚠ Nhãn phân loại xuất hiện trong nhật ký audit | |
| ⚠ Trả lời được "ai đọc dữ liệu Confidential tháng này" | |
| ⚠ Rất hữu ích | ⚠ cho báo cáo GDPR và PCI DSS |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Nhật ký audit có ai xoá được không | | | Có cảnh báo tự động đọc nhật ký không | | | Khối lượng ghi có kiểm soát được không | |
Và điều biến kiểm toán từ một khoản chi phí thành một năng lực thật: có ai đó hoặc thứ gì đó thật sự đọc nhật ký. Một kho log không ai truy vấn chỉ chứng minh rằng bạn đã ghi, chứ không phát hiện được gì cả.