Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Mọi thông tin cần liên lạc, vui lòng gởi đến email [email protected]
.
Vui lòng ghi tiêu đề của email có chứa chữ "Viet Nam", email sẽ tự động gởi đến nhóm hỗ trợ tại Việt Nam (tiếng Việt).
Khi cơ sở dữ liệu master bị mất, SSISDB (SQL Server Integration Services Catalog) sẽ không thể hoạt động do nó phụ thuộc vào Service Master Key (SMK) để mã hóa dữ liệu nhạy cảm. Để khôi phục SSISDB và chạy lại các gói SSIS, bạn cần thực hiện bốn bước quan trọng theo thứ tự sau:
1️⃣ Gắn lại (Attach) cơ sở dữ liệu SSISDB
Khi master database bị mất, SSISDB không còn khả dụng trong SQL Server.
Bạn cần gắn lại (attach) cơ sở dữ liệu SSISDB bằng lệnh T-SQL hoặc thông qua SQL Server Management Studio (SSMS).
2️⃣ Mở khóa Master Key của SSISDB
SSISDB lưu trữ dữ liệu nhạy cảm đã được mã hóa bằng Database Master Key (DMK).
Bạn phải mở khóa DMK bằng mật khẩu được thiết lập khi cài đặt SSISDB:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'YourStrongPassword'
3️⃣ Mã hóa lại Master Key bằng Service Master Key
Do Master Database bị mất, Service Master Key (SMK) cũng bị mất.
Bạn cần mã hóa lại DMK bằng SMK mới để SSISDB có thể hoạt động bình thường trong SQL Server:
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;
Bước này giúp bảo đảm rằng SSISDB có thể sử dụng khóa mã hóa mới để hoạt động bình thường.
4️⃣ Bật thuộc tính TRUSTWORTHY và kích hoạt CLR
SSISDB yêu cầu bật CLR (Common Language Runtime) để thực hiện các tác vụ nội bộ.
Trường TRUSTWORTHY phải được đặt thành ON để SSISDB hoạt động đúng cách:
ALTER DATABASE SSISDB SET TRUSTWORTHY ON;
EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;
Bước
Hành động
1
Gắn lại cơ sở dữ liệu SSISDB (Attach the SSISDB database)
2
Mở khóa Master Key cho SSISDB (Open the master key for the SSISDB database)
3
Mã hóa lại Master Key bằng Service Master Key (Encrypt a copy of the master key by using the service master key)
4
Bật TRUSTWORTHY và CLR (Turn on the TRUSTWORTHY property and the CLR property)
❌ Thêm chứng chỉ vào Azure Key Vault (Add a certificate to an Azure key vault) → Không cần thiết trong tình huống này vì SSISDB không phụ thuộc vào Key Vault.
❌ Bật Transparent Data Encryption (TDE) (Enable Transparent Data Encryption - TDE) → SSISDB không yêu cầu TDE để hoạt động.
✔ Thực hiện các bước trên theo đúng thứ tự sẽ giúp bạn khôi phục SSISDB thành công và cho phép chạy lại các gói SSIS trên SQL Server 2019 trong Azure VM. ✔ Bảo đảm rằng bạn có sao lưu định kỳ cho master database để tránh mất dữ liệu trong tương lai.
✅ A. Tổng kích thước của tất cả các cơ sở dữ liệu ✅ C. Số lượng cơ sở dữ liệu có đỉnh tải đồng thời * mức sử dụng CPU cao nhất của mỗi cơ sở dữ liệu ✅ E. Tổng số cơ sở dữ liệu * mức sử dụng CPU trung bình của mỗi cơ sở dữ liệu
Bạn có 20 Azure SQL databases và muốn tối ưu hóa tài nguyên bằng Azure SQL Elastic Pool. Để xác định kích thước phù hợp, bạn cần xem xét các yếu tố hiệu suất và tài nguyên sử dụng.
✅ A. Tổng kích thước của tất cả các cơ sở dữ liệu
🔹 Elastic Pool có giới hạn dung lượng lưu trữ. 🔹 Tổng kích thước của tất cả các database giúp đảm bảo Elastic Pool đủ dung lượng để chứa chúng. 🔹 Nếu tổng kích thước quá lớn, cần chọn một pool có dung lượng cao hơn hoặc chia nhỏ cơ sở dữ liệu.
✅ C. Số lượng cơ sở dữ liệu có đỉnh tải đồng thời * mức sử dụng CPU cao nhất của mỗi cơ sở dữ liệu
🔹 Trong một Elastic Pool, không phải tất cả các database đều đạt mức tải cao cùng lúc. 🔹 Bạn cần xác định có bao nhiêu database đạt mức tải cao nhất đồng thời, và mức sử dụng CPU cao nhất để đảm bảo pool có đủ tài nguyên xử lý.
✅ E. Tổng số cơ sở dữ liệu * mức sử dụng CPU trung bình của mỗi cơ sở dữ liệu
🔹 Giúp ước lượng mức tiêu thụ CPU tổng thể trong pool. 🔹 Dùng để chọn số lượng vCore hợp lý cho Elastic Pool dựa trên mức sử dụng trung bình.
Lựa chọn
Lý do không chọn
B. Hỗ trợ geo-replication
❌ Elastic Pool không ảnh hưởng đến geo-replication, vì replication hoạt động trên từng database riêng lẻ.
D. Số lượng phiên (session) đồng thời tối đa của tất cả các cơ sở dữ liệu
❌ Elastic Pool được tối ưu cho CPU & IOPS, không bị giới hạn bởi số lượng session như một yếu tố chính để tính toán kích thước.
Chỉ số cần sử dụng
Lý do
A. Tổng kích thước của tất cả các database
✅ Đảm bảo pool có đủ dung lượng lưu trữ
C. Số lượng database có đỉnh tải đồng thời * mức sử dụng CPU cao nhất
✅ Xác định vCore cần thiết khi tải cao
E. Tổng số database * mức sử dụng CPU trung bình
✅ Ước lượng mức CPU tổng thể của Elastic Pool
✅ Dùng tổng kích thước dữ liệu, mức CPU trung bình & đỉnh để chọn Elastic Pool phù hợp. ✅ Elastic Pool giúp giảm chi phí nếu database có tải thay đổi theo thời gian. ✅ Không cần tính đến geo-replication hoặc số session đồng thời.
Vui lòng liên hệ ở mục Liên hệ
Chi phí rẻ hơn website cho voucher (thay vì 165 USD thì chỉ có 1 triệu VND)
Đề thi nhiều, hơn 400 câu; nhưng chỉ giá vài ly cafe. Bạn có sẳn sàng?
Xin cảm ơn.
Vui lòng truy cập More ...
DP-300: Administering Relational Databases on Microsoft Azure là một chứng chỉ của Microsoft dành cho những ai muốn trở thành Azure Database Administrator (DBA). Chứng chỉ này kiểm tra khả năng quản trị, giám sát, tối ưu và bảo mật các cơ sở dữ liệu quan hệ (RDBMS) trên Microsoft Azure.
DP-300 dành cho: ✅ Database Administrators (DBA) muốn mở rộng kiến thức lên Azure. ✅ Data Engineers cần hiểu về quản lý dữ liệu trên Azure. ✅ IT Professionals làm việc với cơ sở dữ liệu SQL Server hoặc PostgreSQL trên nền tảng Azure. ✅ DevOps Engineers cần quản lý database trên Cloud.
Bài thi DP-300 tập trung vào các kỹ năng sau:
Chủ đề
Tỷ lệ (%) trong bài thi
Triển khai và quản lý cơ sở dữ liệu trong Azure
15 - 20%
Giám sát và tối ưu hóa hiệu suất
25 - 30%
Cấu hình bảo mật cơ sở dữ liệu
15 - 20%
Triển khai chiến lược High Availability & Disaster Recovery (HA/DR)
10 - 15%
Tự động hóa các tác vụ quản trị
10 - 15%
Lập kế hoạch và thiết kế tài nguyên cơ sở dữ liệu
10 - 15%
🔹 Quản lý Azure SQL Database, Azure SQL Managed Instance và SQL Server trên Azure VM 🔹 Cấu hình bảo mật, quyền truy cập và mã hóa dữ liệu 🔹 Giám sát hiệu suất bằng Azure Monitor, Query Store, Performance Insights 🔹 Tối ưu hóa truy vấn SQL (Indexing, Execution Plan, Statistics, Partitioning) 🔹 Thiết lập sao lưu (Backup) và phục hồi (Restore) dữ liệu 🔹 Cấu hình High Availability (HA) với Failover Groups, Geo-replication, Always On Availability Groups 🔹 Tự động hóa tác vụ DBA với PowerShell, Azure CLI và Automation
📌 Mã bài thi: DP-300 📌 Thời gian: 120 phút 📌 Số câu hỏi: ~40 - 60 câu 📌 Dạng câu hỏi:
Trắc nghiệm (Multiple Choice)
Kéo thả (Drag & Drop)
Mô phỏng thực tế (Case Study) 📌 Điểm đậu: 700/1000 📌 Chi phí: ~$165 USD (tùy quốc gia) Chúng tôi cung cấp voucher có 1 triệu VND à. 📌 Thi online qua Pearson VUE hoặc tại trung tâm khảo thí
✅ Cơ hội nghề nghiệp cao: Chứng chỉ giúp bạn có lợi thế khi ứng tuyển vào các vị trí Database Administrator, Data Engineer, Cloud DBA. ✅ Tăng lương & cơ hội thăng tiến: DBA trên Azure là một trong những lĩnh vực có mức lương cao. ✅ Học được kỹ năng thực tế: Không chỉ lý thuyết, DP-300 giúp bạn làm việc với SQL Server trên Azure, Azure SQL Database, Azure Managed Instance. ✅ Chứng chỉ Microsoft có giá trị quốc tế: Được công nhận bởi các công ty lớn.
📚 Tài liệu chính thức từ Microsoft Learn: 👉 Microsoft Learn - DP-300
📚 Khóa học online trên Udemy, Pluralsight, Coursera 📚 Học thực hành với Azure Free Tier (12 tháng miễn phí) 📚 Luyện thi với practice test trên VardyTests.com
You have 20 Azure SQL databases provisioned by using the vCore purchasing model. You plan to create an Azure SQL Database elastic pool and add the 20 databases. Which three metrics should you use to size the elastic pool to meet the demands of your workload? Each correct answer presents part of the solution. NOTE: Each correct selection is worth one point. A. total size of all the databases Most Voted B. geo-replication support C. number of concurrently peaking databases * peak CPU utilization per database Most Voted D. maximum number of concurrent sessions for all the databases E. total number of databases * average CPU utilization per database
Dựa trên yêu cầu di chuyển trực tuyến (online migration), các lựa chọn chính xác là:
✅ "Full and log backups only"
Vì sao?
Azure DMS yêu cầu backup đầy đủ (Full Backup) trước tiên, sau đó tiếp tục áp dụng Transaction Log Backup để đồng bộ hóa dữ liệu liên tục giữa SQL Server và Azure SQL Managed Instance.
Không cần dùng Differential Backup trong quá trình di chuyển online.
Chỉ Full và Log Backup giúp quá trình migration diễn ra liên tục, đảm bảo ít downtime nhất.
✅ "WITH NOINIT"
Vì sao?
WITH NOINIT
đảm bảo bản backup mới sẽ được thêm vào tập tin backup cũ thay vì ghi đè lên.
Điều này quan trọng khi thực hiện nhiều lần backup (Full + Log) trong quá trình di chuyển online, giúp Azure DMS có thể đọc toàn bộ chuỗi backup một cách liên tục.
Các lựa chọn khác và lý do không chọn
Tùy chọn Backup
Lý do không chọn
WITH CHECKSUM
Kiểm tra tính toàn vẹn của backup, nhưng không ảnh hưởng đến quá trình migration.
WITH UNLOAD
Dùng cho backup lên băng từ (Tape), không áp dụng cho Azure Blob Storage.
Trường
Lựa chọn đúng
Backup type
Full and log backups only
Backup option
WITH NOINIT CHECKSUM (Xem lại)
🔹 Cấu hình này giúp quá trình di chuyển online diễn ra suôn sẻ với ít downtime nhất. 🔹 Azure DMS sẽ sử dụng Full Backup và liên tục áp dụng Transaction Log Backup để đồng bộ dữ liệu.
Bạn cần một dịch vụ có thể thay đổi số lượng partition sau khi tạo để xử lý luồng dữ liệu có khối lượng biến đổi.
✅ Azure Event Hubs Standard hỗ trợ tăng số lượng partition sau khi tạo, nhưng không thể giảm.
Dịch vụ
Hỗ trợ thay đổi partition count sau khi tạo?
Lý do chọn hoặc không chọn
A. Azure Event Hubs Standard ✅
Có (Chỉ tăng, không giảm)
🔹 Thích hợp cho ingestion dữ liệu streaming🔹 Hỗ trợ thay đổi số partition sau khi tạo
B. Azure Stream Analytics ❌
Không
🔹 Chỉ dùng để xử lý dữ liệu streaming, không phải để ingestion. 🔹 Không quản lý partition count
C. Azure Data Factory ❌
Không
🔹 Dành cho batch processing, không phải streaming
D. Azure Event Hubs Dedicated ❌
Không
🔹 Partition count cố định và không thể thay đổi
1️⃣ Hỗ trợ ingestion dữ liệu streaming tốc độ cao từ IoT, logs, clickstream, telemetry. 2️⃣ Có thể tăng số lượng partitions sau khi tạo để mở rộng khả năng xử lý dữ liệu. 3️⃣ Tích hợp tốt với Azure Stream Analytics, Databricks, Apache Spark, và Azure Functions.
🔹 Partition giúp chia nhỏ dữ liệu để xử lý song song. 🔹 Bạn có thể tăng số lượng partition sau khi tạo, nhưng không thể giảm. 🔹 Partition count ảnh hưởng đến hiệu suất và chi phí.
✅ Sử dụng Azure Event Hubs Standard để đảm bảo khả năng thay đổi partition count sau khi tạo, giúp hệ thống linh hoạt hơn khi khối lượng dữ liệu thay đổi.
Bạn có muốn hướng dẫn chi tiết cách triển khai Azure Event Hubs Standard không? 🚀
Vui lòng truy cập More ...
Trước khi sử dụng Azure Database Migration Service (DMS), bạn cần thực hiện một số bước chuẩn bị trên SQL Server On-Premises và Azure SQL Managed Instance.
🔹 Yêu cầu hệ thống:
Nguồn (On-Premises): SQL Server 2019 (hoặc các phiên bản cũ hơn được hỗ trợ).
Đích (Azure SQL Managed Instance): Đã được tạo trên Azure.
Kết nối mạng: Phải có kết nối giữa SQL Server On-Premises và Azure SQL Managed Instance.
🔹 Kiểm tra các tính năng không hỗ trợ trên Azure SQL Managed Instance:
Chạy lệnh sau trên SQL Server để kiểm tra các tính năng không hỗ trợ:
SELECT * FROM sys.dm_db_feature_usage;
Nếu có các tính năng không tương thích (VD: Database Mail, Linked Server, Filestream), cần loại bỏ hoặc thay thế.
🔹 Kiểm tra dung lượng ổ cứng, RAM: Vì CSDL có kích thước 4TB, cần đảm bảo đủ tài nguyên để thực hiện migration mà không ảnh hưởng hiệu suất.
Azure DMS cần kết nối tới SQL Server On-Premises để sao chép dữ liệu.
✅ Bật chế độ TCP/IP trong SQL Server:
Mở SQL Server Configuration Manager.
Chọn SQL Server Network Configuration > Protocols for <Instance_Name>.
Bật TCP/IP và khởi động lại SQL Server.
✅ Mở Firewall cho SQL Server:
Trên máy chủ SQL Server, mở Windows Firewall.
Thêm inbound rule cho TCP port 1433 (hoặc cổng tùy chỉnh của SQL Server).
Nếu sử dụng Always On Availability Groups, mở thêm các cổng 5022 (Endpoint).
✅ Tạo tài khoản có quyền SA (hoặc sysadmin) để DMS kết nối:
CREATE LOGIN migration_user WITH PASSWORD = 'StrongPassword123!';
ALTER SERVER ROLE sysadmin ADD MEMBER migration_user;
Nếu bạn chưa có Azure SQL Managed Instance, hãy tạo trước khi thực hiện migration.
Truy cập Azure Portal → Tạo tài nguyên → Azure SQL Managed Instance.
Chọn Kích thước phù hợp với CSDL (Ít nhất 4TB dung lượng lưu trữ).
Cấu hình VNET (Virtual Network) để có thể kết nối với SQL Server On-Premises.
Lưu lại Tên server, user, password để dùng cho bước tiếp theo.
Bước 1: Tạo Azure Database Migration Service (DMS)
Truy cập Azure Portal → Tìm kiếm Database Migration Service.
Chọn Tạo mới.
Nhập các thông tin:
Tên dịch vụ: DMS-Server-Migration.
Subscription: Chọn subscription của bạn.
Resource Group: Chọn hoặc tạo mới.
VNET: Chọn Virtual Network có thể kết nối với SQL Server On-Premises.
Pricing Tier: Chọn Standard (Miễn phí nhưng chỉ hỗ trợ offline migration) hoặc Premium (Hỗ trợ Online migration - ít downtime).
Bấm "Create" để hoàn tất.
Bước 2: Bắt đầu quá trình Migration
Trong DMS, chọn + New Migration Project.
Đặt tên Migration Project, chọn Source Type = SQL Server, Target Type = Azure SQL Managed Instance.
Chọn Online Data Migration để giảm downtime (Nếu muốn di chuyển offline, chọn Offline Migration).
Nhấn Create and Run Activity.
Bước 3: Kết nối nguồn SQL Server On-Premises
Nhập thông tin kết nối nguồn SQL Server:
Server Name: Nhập địa chỉ IP hoặc tên server SQL On-Premises.
Authentication: Chọn SQL Authentication.
User Name: Nhập migration_user
(tài khoản đã tạo).
Password: Nhập mật khẩu.
Nhấn "Next" để kiểm tra kết nối.
Chọn Database cần di chuyển (DB1 - 4TB).
Bước 4: Kết nối đích Azure SQL Managed Instance
Nhập thông tin Azure SQL Managed Instance:
Server Name: Nhập Tên Managed Instance (VD: yourmi.public.xxx.database.windows.net
).
Authentication: SQL Authentication.
User Name & Password (đã tạo khi thiết lập Azure SQL MI).
Nhấn "Next" để kiểm tra kết nối.
Bước 5: Cấu hình Migration
Chọn Objects cần di chuyển (Schema + Data).
Bấm Start Data Migration.
DMS sẽ bắt đầu sao chép dữ liệu từ SQL Server On-Premises sang Azure SQL Managed Instance.
Quá trình này có thể mất vài giờ hoặc vài ngày tùy theo kích thước dữ liệu.
Bước 6: Thực hiện Cutover (Chuyển đổi cuối cùng)
Khi trạng thái Data Migration hiển thị 99-100% hoàn tất, chuẩn bị cho cutover.
Tạm dừng các thay đổi trên SQL Server On-Premises.
Áp dụng lần cuối các thay đổi mới nhất bằng cách chạy lệnh sau:
ALTER DATABASE DB1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
Nhấn Complete Cutover trong Azure DMS.
Chuyển hướng ứng dụng sang sử dụng Azure SQL Managed Instance.
Chạy kiểm tra dữ liệu:
So sánh số lượng bảng, số lượng dòng giữa SQL Server On-Premises và Azure SQL MI.
Kiểm tra lịch sử giao dịch, khóa chính, index.
Kiểm tra hiệu suất:
Kiểm tra execution plan trong Azure SQL MI.
Cấu hình lại Index, Statistics để tối ưu truy vấn.
Xóa dịch vụ Azure DMS nếu không cần dùng nữa để tiết kiệm chi phí.
✔ Sử dụng Azure Database Migration Service (DMS) để di chuyển SQL Server 2019 (4TB) lên Azure SQL Managed Instance với ít downtime. ✔ DMS hỗ trợ online migration (giảm downtime tối đa) và tự động sao chép dữ liệu. ✔ Sau khi migration, cần kiểm tra lại dữ liệu và tối ưu hệ thống.
You are designing a streaming data solution that will ingest variable volumes of data. You need to ensure that you can change the partition count after creation. Which service should you use to ingest the data? A. Azure Event Hubs Standard B. Azure Stream Analytics C. Azure Data Factory D. Azure Event Hubs Dedicated
HOTSPOT - You have an Azure Synapse Analytics dedicated SQL pool named Pool1 and an Azure Data Lake Storage Gen2 account named Account1. You plan to access the ¬les in Account1 by using an external table. You need to create a data source in Pool1 that you can reference when you create the external table. How should you complete the Transact-SQL statement? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point. Hot Area:
Bạn cần tạo một External Data Source trong Azure Synapse Analytics (Dedicated SQL Pool - Pool1) để truy cập tệp trong Azure Data Lake Storage Gen2 (Account1).
✅ LOCATION: dfs
✅ TYPE: BLOB_STORAGE
1. LOCATION = 'https://account1..core.windows.net'
Azure Data Lake Storage Gen2 sử dụng giao thức dfs
(Data Lake filesystem) để truy cập dữ liệu.
Nếu bạn đang truy cập Azure Blob Storage (không có Hierarchical Namespace - HNS), bạn có thể sử dụng blob
.
Tuy nhiên, Data Lake Storage Gen2 yêu cầu dfs
để hỗ trợ thư mục phân cấp.
🔹 Lựa chọn đúng: dfs
2. TYPE = BLOB_STORAGE hoặc HADOOP
Khi truy cập Azure Data Lake Storage Gen2 từ Azure Synapse Analytics, cần chọn TYPE = BLOB_STORAGE
.
HADOOP
chỉ dùng cho HDFS-based storage (ví dụ: Azure HDInsight hoặc hệ thống Hadoop, không phải Azure Data Lake Storage Gen2).
🔹 Lựa chọn đúng: BLOB_STORAGE
CREATE EXTERNAL DATA SOURCE source1
WITH (
LOCATION = 'https://account1.dfs.core.windows.net',
TYPE = BLOB_STORAGE
);
Trường
Lựa chọn đúng
LOCATION
dfs
TYPE
BLOB_STORAGE
🚀 Sau khi tạo External Data Source, bạn có thể: ✅ Tạo External Table để truy vấn dữ liệu trực tiếp từ Azure Data Lake Storage Gen2. ✅ Sử dụng PolyBase hoặc OPENROWSET để đọc dữ liệu từ tệp lưu trữ ngoài.
You have a Microsoft SQL Server 2019 instance in an on-premises datacenter. The instance contains a 4-TB database named DB1. You plan to migrate DB1 to an Azure SQL Database managed instance. What should you use to minimize downtime and data loss during the migration? A. distributed availability groups B. database mirroring C. Always On Availability Group D. Azure Database Migration Service
You have a Microsoft SQL Server 2019 database named DB1 that uses the following database-level and instance-level features. ✑ Clustered columnstore indexes ✑ Automatic tuning ✑ Change tracking ✑ PolyBase You plan to migrate DB1 to an Azure SQL database. What feature should be removed or replaced before DB1 can be migrated?
HOTSPOT - You have an on-premises Microsoft SQL Server 2016 server named Server1 that contains a database named DB1. You need to perform an online migration of DB1 to an Azure SQL Database managed instance by using Azure Database Migration Service. How should you configure the backup of DB1? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point. Hot Area:
You have an Azure SQL database that contains a table named factSales. FactSales contains the columns shown in the following table.
FactSales has 6 billion rows and is loaded nightly by using a batch process. You must provide the greatest reduction in space for the database and maximize performance.
Which type of compression provides the greatest space reduction for the database?
A. page compression
B. row compression
C. columnstore compression
D. columnstore archival compression
D. columnstore archival compression
Với bảng factSales
có 6 tỷ dòng và được tải hàng đêm bằng quy trình batch, phương pháp nén Columnstore là lựa chọn tối ưu nhất để giảm dung lượng và tăng hiệu suất.
🔹 Giảm dung lượng lớn nhất
Nén Columnstore giúp giảm kích thước dữ liệu lên đến 10 lần so với lưu trữ dạng hàng (rowstore).
Thay vì lưu dữ liệu theo dòng, Columnstore lưu dữ liệu theo cột và áp dụng thuật toán nén mạnh hơn.
🔹 Tăng hiệu suất cho truy vấn phân tích
Nhanh hơn gấp 10 - 100 lần cho các truy vấn SUM
, AVG
, COUNT
, GROUP BY
, JOIN
, rất phù hợp với dữ liệu fact trong data warehouse.
Giảm I/O, giúp truy vấn trên hàng tỷ dòng nhanh hơn.
🔹 Tối ưu cho tải dữ liệu theo batch
Clustered Columnstore Index (CCI) hoạt động tốt với quy trình tải dữ liệu hàng đêm.
Xử lý batch hiệu quả, giảm áp lực ghi dữ liệu.
Row-Level Compression
Tốt
Cải thiện nhẹ
Page-Level Compression
Tốt hơn row-level
Cải thiện tốt hơn
Clustered Columnstore Index (CCI)
Tốt nhất (10x hoặc hơn)
Nhanh nhất với truy vấn phân tích
⚡ Kết luận: Sử dụng Clustered Columnstore Index (CCI) là lựa chọn tối ưu nhất.
Bạn có thể tạo CCI trên bảng factSales
bằng lệnh sau:
sqlCopyEditCREATE CLUSTERED COLUMNSTORE INDEX CCI_FactSales
ON factSales;
Lưu ý:
Nếu cần truy vấn tìm kiếm nhanh trên một số cột cụ thể, có thể tạo Nonclustered Rowstore Index trên các cột đó để cân bằng giữa OLTP và OLAP.
Bạn cần triển khai một nhóm tài nguyên mới (App1Test) chứa TestServer1 và DB1, đảm bảo rằng các cấu hình giống với App1Dev và DevServer1.
1️⃣ Từ Azure Portal, xuất template của Azure Resource Manager (ARM)
Bước này sẽ trích xuất các cấu hình hiện tại của DevServer1 và DB1.
Template ARM chứa toàn bộ thiết lập về SQL Server, database, firewall rules, cài đặt bảo mật.
2️⃣ Thay đổi tên máy chủ và các biến liên quan trong template
Vì chúng ta đang tạo mới TestServer1 và App1Test, cần chỉnh sửa template để trỏ đến máy chủ và nhóm tài nguyên mới.
Điều này đảm bảo deployment không ảnh hưởng đến DevServer1 mà chỉ áp dụng cho TestServer1.
3️⃣ Từ Azure Portal, triển khai template đã chỉnh sửa
Sau khi chỉnh sửa xong, triển khai template lên nhóm tài nguyên App1Test.
Quá trình này sẽ tạo mới TestServer1 và DB1 với các cấu hình giống DevServer1.
4️⃣ Từ dự án database, triển khai schema và quyền truy cập
Vì schema và quyền truy cập đã được lưu trữ trong SQL Server Data Tools (SSDT) project, ta cần áp dụng chúng vào DB1 trên TestServer1.
Đảm bảo rằng cấu trúc và bảo mật của DB1 trên TestServer1 giống với DevServer1.
❌ Thay đổi Admin Active Directory trên TestServer1
Không cần thiết trong quá trình triển khai ban đầu. Nếu cần, có thể cập nhật sau khi tạo xong TestServer1.
❌ Thêm địa chỉ IP vào firewall
Không ảnh hưởng đến quá trình tạo tài nguyên, có thể làm sau khi database đã sẵn sàng để truy cập.
🚀 Thứ tự đúng giúp tạo một môi trường TestServer1 giống DevServer1 một cách chính xác. 🔹 Sử dụng template ARM giúp đảm bảo cấu hình đồng nhất. 🔹 Sau khi triển khai, áp dụng schema và quyền truy cập giúp DB1 trên TestServer1 có dữ liệu và bảo mật giống DevServer1.
HOTSPOT - You plan to develop a dataset named Purchases by using Azure Databricks. Purchases will contain the following columns: ✑ ProductID ✑ ItemPrice ✑ LineTotal ✑ Quantity ✑ StoreID ✑ Minute ✑ Month ✑ Hour ✑ Year ✑ Day You need to store the data to support hourly incremental load pipelines that will vary for each StoreID. The solution must minimize storage costs. How should you complete the code? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point. Hot Area:
DRAG DROP - You have a resource group named App1Dev that contains an Azure SQL Database server named DevServer1. DevServer1 contains an Azure SQL database named DB1. The schema and permissions for DB1 are saved in a Microsoft SQL Server Data Tools (SSDT) database project. You need to populate a new resource group named App1Test with the DB1 database and an Azure SQL Server named TestServer1. The resources in App1Test must have the same con¬gurations as the resources in App1Dev. Which four actions should you perform in sequence? To answer, move the appropriate actions from the list of actions to the answer area and arrange them in the correct order. Select and Place:
Thứ tự
Hành động cần thực hiện
1
Từ Azure Portal, xuất template của Azure Resource Manager
2
Thay đổi tên máy chủ và các biến liên quan trong template
3
Từ Azure Portal, triển khai template
4
Từ dự án database, triển khai schema và quyền truy cập
DRAG DROP - You have SQL Server 2019 on an Azure virtual machine that contains an SSISDB database. A recent failure causes the master database to be lost. You discover that all Microsoft SQL Server integration Services (SSIS) packages fail to run on the virtual machine. Which four actions should you perform in sequence to resolve the issue? To answer, move the appropriate actions from the list of actions to the answer area and arrange them in the correct. Select and Place:
✅ Đáp án đúng: D. Azure Database Migration Service (DMS)
🔹 Hỗ trợ di chuyển dữ liệu trực tuyến (Online Migration) → Giúp giảm downtime xuống mức tối thiểu bằng cách đồng bộ dữ liệu liên tục từ SQL Server 2019 sang Azure SQL Managed Instance. 🔹 Giữ nguyên tính toàn vẹn của dữ liệu → Đảm bảo không mất dữ liệu trong quá trình di chuyển. 🔹 Hỗ trợ di chuyển cơ sở dữ liệu lớn (4TB+) → DMS được thiết kế để hỗ trợ các cơ sở dữ liệu có dung lượng lớn. 🔹 Tích hợp tự động → Tự động chuyển schema, dữ liệu, index từ SQL Server 2019 lên Azure SQL Managed Instance. 🔹 Có khả năng giám sát và xử lý lỗi → Hỗ trợ theo dõi tiến trình và khắc phục sự cố trong quá trình di chuyển.
1️⃣ Chuẩn bị CSDL nguồn (SQL Server 2019 On-Premises)
Kiểm tra khả năng kết nối của SQL Server với Azure.
Bật TCP/IP và cho phép truy cập từ Azure.
Đảm bảo không có tính năng không được hỗ trợ trong Azure SQL Managed Instance.
2️⃣ Tạo dịch vụ Azure Database Migration Service (DMS) trên Azure
Truy cập Azure Portal để tạo DMS.
Chọn chế độ Online Migration để đảm bảo di chuyển trực tuyến, ít downtime.
3️⃣ Bắt đầu đồng bộ dữ liệu
DMS sao chép toàn bộ dữ liệu ban đầu từ SQL Server lên Azure SQL Managed Instance.
Sau đó, DMS tiếp tục đồng bộ các thay đổi mới từ SQL Server để đảm bảo dữ liệu luôn được cập nhật.
4️⃣ Cắt chuyển (Cutover - Hoàn tất di chuyển)
Khi dữ liệu đã được đồng bộ hoàn toàn, tạm dừng các thay đổi trên SQL Server.
Áp dụng các thay đổi cuối cùng, chuyển hướng ứng dụng sang Azure SQL Managed Instance.
Tùy chọn
Lý do không phù hợp
A. Distributed Availability Groups
❌ Không được hỗ trợ cho Azure SQL Managed Instance, chỉ hoạt động giữa các SQL Server On-Premises.
B. Database Mirroring
❌ Đã bị loại bỏ trong SQL Server 2019 và không hỗ trợ Azure SQL Managed Instance.
C. Always On Availability Group
❌ Không thể sử dụng để di chuyển trực tiếp lên Azure SQL Managed Instance. Chỉ hoạt động giữa các SQL Server truyền thống.
✔ Sử dụng Azure Database Migration Service (DMS) để di chuyển dữ liệu một cách trực tuyến, ít downtime, và đảm bảo không mất dữ liệu. ✔ DMS giúp bạn dễ dàng thực hiện migration mà không cần quá nhiều cấu hình phức tạp. ✔ Tránh các phương pháp lỗi thời hoặc không hỗ trợ trong Azure SQL Managed Instance. 🚀
Bạn cần hỗ trợ pipeline tải dữ liệu gia tăng theo giờ và biến thiên theo từng StoreID, đồng thời tối ưu chi phí lưu trữ. Do đó, bạn cần chọn partitioning hợp lý và định dạng lưu trữ tối ưu.
✅ .partitionBy("StoreID", "Year", "Month", "Day", "Hour")
Vì sao chọn partitionBy?
Partition giúp truy vấn nhanh hơn → Nếu dữ liệu được phân vùng theo StoreID
, Year
, Month
, Day
, Hour
, khi truy vấn theo StoreID hoặc theo giờ, Databricks sẽ chỉ đọc các phân vùng cần thiết thay vì toàn bộ dữ liệu.
Tăng hiệu suất cho tải dữ liệu gia tăng (incremental load) → Vì pipeline tải dữ liệu theo giờ, việc phân vùng theo thời gian sẽ giúp tối ưu hiệu suất truy vấn và lưu trữ.
Vì sao không chọn các phương án khác?
❌ .bucketBy()
→ Chỉ giúp tổ chức dữ liệu trong một số lượng bucket cố định, không hỗ trợ partition pruning (lọc nhanh dữ liệu).
❌ .sortBy()
→ Chỉ giúp sắp xếp trong từng file nhưng không tạo partition.
❌ .range()
→ Không phải là tùy chọn hợp lệ trong .write()
.
✅ .parquet("/Purchases")
Vì sao chọn Parquet?
Lưu trữ theo cột (columnar storage) → Hiệu suất truy vấn cao hơn CSV hoặc JSON.
Nén dữ liệu tốt hơn → Giảm chi phí lưu trữ, đặc biệt khi lưu trữ dữ liệu lớn.
Hỗ trợ tốt khi sử dụng partitionBy → Giúp đọc dữ liệu nhanh hơn khi truy vấn theo thời gian hoặc StoreID.
Vì sao không chọn các phương án khác?
❌ .csv("/Purchases")
→ Không hỗ trợ partition pruning và chiếm nhiều dung lượng hơn.
❌ .json("/Purchases")
→ Thích hợp hơn cho dữ liệu phi cấu trúc, nhưng hiệu suất truy vấn thấp hơn Parquet.
❌ .saveAsTable("/Purchases")
→ Dùng để lưu dữ liệu vào bảng trong Databricks nhưng không trực tiếp hỗ trợ partitioning hiệu quả như .parquet()
.
df.write
.partitionBy("StoreID", "Year", "Month", "Day", "Hour")
.mode("append")
.parquet("/Purchases")
Lựa chọn
Giải thích
Partitioning Method
.partitionBy("StoreID", "Year", "Month", "Day", "Hour")
(tối ưu hóa tải dữ liệu gia tăng và truy vấn)
Storage Format
.parquet("/Purchases")
(hiệu suất cao, giảm chi phí lưu trữ)
✅ Hỗ trợ tải dữ liệu gia tăng theo giờ, tối ưu hiệu suất truy vấn. ✅ Tiết kiệm chi phí lưu trữ do Parquet nén dữ liệu tốt. ✅ Dễ dàng mở rộng cho lượng dữ liệu lớn trong Azure Databricks.
Bạn đang có một cơ sở dữ liệu SQL Server 2019 (DB1) sử dụng các tính năng sau: ✅ Clustered Columnstore Indexes ✅ Automatic Tuning ✅ Change Tracking ❌ PolyBase
❌ PolyBase không được hỗ trợ trên Azure SQL Database.
PolyBase trên SQL Server chủ yếu dùng để truy vấn dữ liệu từ nguồn bên ngoài như Hadoop, Azure Blob Storage, hoặc cơ sở dữ liệu khác thông qua T-SQL.
Azure SQL Database không hỗ trợ PolyBase, do đó bạn phải thay thế bằng phương pháp khác.
🔹 Truy vấn dữ liệu từ nguồn bên ngoài bằng Elastic Query (nếu cần kết nối với Azure SQL Database khác). 🔹 Sử dụng Azure Data Factory hoặc Azure Synapse Analytics để tích hợp dữ liệu từ nhiều nguồn khác nhau. 🔹 Dùng OPENROWSET để truy vấn dữ liệu từ Azure Blob Storage, ví dụ:
✅ Gỡ bỏ hoặc thay thế PolyBase trước khi di chuyển. ✅ Nếu đang dùng PolyBase để truy vấn dữ liệu ngoài, hãy xem xét Elastic Query hoặc Azure Data Factory. ✅ Kiểm tra và tối ưu hiệu suất sau khi di chuyển lên Azure SQL Database.
PolyBase là một tính năng của Microsoft SQL Server dùng để truy vấn dữ liệu từ nguồn bên ngoài bằng cách sử dụng T-SQL tiêu chuẩn. Nó cho phép SQL Server truy xuất dữ liệu từ các hệ thống lưu trữ khác như Azure Blob Storage, Hadoop, và các hệ quản trị cơ sở dữ liệu khác mà không cần di chuyển dữ liệu về SQL Server.
✅ Truy vấn dữ liệu từ nhiều nguồn khác nhau bằng T-SQL ✅ Tích hợp dữ liệu từ nguồn bên ngoài mà không cần ETL ✅ Hỗ trợ truy vấn dữ liệu lớn (Big Data) ✅ Tối ưu hiệu suất truy vấn bằng cách dùng các công cụ phân tán như Hadoop
Ví dụ, bạn có thể sử dụng PolyBase để truy vấn một file CSV nằm trong Azure Blob Storage như thể nó là một bảng trong SQL Server:
Azure Blob Storage 🏢 (Truy xuất dữ liệu từ tệp CSV, JSON, Parquet, Avro)
Azure Data Lake Storage 🌊 (Dữ liệu phi cấu trúc & bán cấu trúc)
Hadoop Distributed File System (HDFS) 🏗️ (Hệ thống tệp phân tán phổ biến trong Big Data)
SQL Server khác hoặc PostgreSQL, Oracle, Teradata 🔗 (Truy vấn liên cơ sở dữ liệu)
MongoDB, CosmosDB 🌍 (Dữ liệu NoSQL)
1️⃣ Tạo External Data Source (nguồn dữ liệu bên ngoài). 2️⃣ Tạo External Table (bảng đại diện cho dữ liệu bên ngoài). 3️⃣ Dùng T-SQL để truy vấn dữ liệu từ nguồn ngoài như truy vấn bảng thông thường.
Ví dụ: Truy vấn dữ liệu từ Azure Blob Storage thông qua PolyBase
🚫 Không. PolyBase KHÔNG được hỗ trợ trong Azure SQL Database. ✅ Tuy nhiên, bạn có thể thay thế bằng:
Elastic Query (nếu cần truy vấn dữ liệu giữa các Azure SQL Database).
OPENROWSET (nếu cần đọc dữ liệu từ Azure Blob Storage).
Azure Data Factory hoặc Synapse Analytics (nếu cần tích hợp dữ liệu lớn).
Ví dụ thay thế PolyBase bằng OPENROWSET để đọc tệp CSV từ Azure Blob Storage:
✅ Khi bạn cần truy vấn dữ liệu lớn mà không muốn nhập dữ liệu vào SQL Server. ✅ Khi bạn muốn kết nối với nhiều hệ thống cơ sở dữ liệu khác nhau mà không cần tích hợp ETL. ✅ Khi bạn đang làm việc với Big Data trên Hadoop hoặc Azure Data Lake.
❌ Khi nào KHÔNG dùng PolyBase?
Khi bạn đang sử dụng Azure SQL Database (vì nó không hỗ trợ PolyBase).
Khi bạn cần ETL dữ liệu một cách phức tạp (thay vào đó, dùng Azure Data Factory).
Khi bạn cần truy vấn dữ liệu không thường xuyên (dùng OPENROWSET thay thế).
✅ PolyBase là một công cụ mạnh trong SQL Server giúp truy vấn dữ liệu ngoài như dữ liệu trên Hadoop, Azure Blob Storage, và SQL Server khác bằng T-SQL. ❌ Không được hỗ trợ trên Azure SQL Database, cần thay thế bằng Elastic Query, OPENROWSET hoặc Azure Data Factory.
Tính năng
Hỗ trợ trên Azure SQL Database?
Hành động cần thực hiện?
Clustered Columnstore Indexes
✅ Có hỗ trợ
Không cần thay đổi
Automatic Tuning
✅ Có hỗ trợ
Không cần thay đổi
Change Tracking
✅ Có hỗ trợ
Không cần thay đổi
PolyBase
❌ Không hỗ trợ
Phải loại bỏ hoặc thay thế
SELECT *
FROM OPENROWSET(BULK 'https://yourstorageaccount.blob.core.windows.net/container/file.csv',
FORMAT = 'CSV',
HEADER_ROW = TRUE) AS data;
sqlCopyEditSELECT *
FROM my_external_table;
sqlCopyEditCREATE EXTERNAL DATA SOURCE AzureBlobStorage
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://yourstorageaccount.blob.core.windows.net/container'
);
CREATE EXTERNAL FILE FORMAT CsvFormat
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2)
);
CREATE EXTERNAL TABLE ExternalTable (
Id INT,
Name NVARCHAR(100),
Amount DECIMAL(10,2)
)
WITH (
LOCATION = 'data.csv',
DATA_SOURCE = AzureBlobStorage,
FILE_FORMAT = CsvFormat
);
SELECT * FROM ExternalTable;
sqlCopyEditSELECT *
FROM OPENROWSET(BULK 'https://yourstorageaccount.blob.core.windows.net/container/data.csv',
FORMAT = 'CSV',
HEADER_ROW = TRUE) AS data;