SQL Server: Cách khởi động SQLServer bỏ qua Database bị lỗi
Khi một database trong SQL Server bị lỗi, nó có thể ngăn toàn bộ instance khởi động thành công. Bài viết này sẽ hướng dẫn bạn các phương pháp khởi động SQL Server mà không load các database bị lỗi.
🔍 Nguyên nhân database lỗi ngăn khởi động SQL Server
SQL Server thực hiện quá trình recovery trên tất cả databases khi khởi động. Nếu một database bị lỗi trong quá trình này, instance có thể không khởi động được. Các lỗi thường gặp bao gồm:
File database bị hỏng
Transaction log bị lỗi
Disk đầy hoặc không truy cập được
Page corruption
🛠️ Các phương pháp khởi động SQL Server bỏ qua database lỗi
1. Sử dụng Trace Flag 3608
Trace Flag 3608 yêu cầu SQL Server chỉ khởi động master database, bỏ qua recovery cho tất cả database khác.
Cách thực hiện:
Mở SQL Server Configuration Manager
Chuột phải vào SQL Server instance → Properties
Chọn tab Startup Parameters
Thêm tham số:
-T3608
Nhấn Add → OK
Khởi động lại SQL Server service
sql
-- Sau khi khởi động thành công, đặt database lỗi ở chế độ OFFLINE
ALTER DATABASE [DatabaseName] SET OFFLINE WITH ROLLBACK IMMEDIATE;
-- Gỡ bỏ trace flag sau khi xử lý xong
2. Đặt database ở chế độ EMERGENCY hoặc OFFLINE
Nếu có thể kết nối đến SQL Server, bạn có thể đặt database lỗi ở chế độ khẩn cấp:
sql
-- Đặt database ở chế độ EMERGENCY
ALTER DATABASE [DatabaseName] SET EMERGENCY;
-- Sau đó đặt thành OFFLINE
ALTER DATABASE [DatabaseName] SET OFFLINE WITH ROLLBACK IMMEDIATE;
3. Di chuyển file database lỗi
Phương pháp vật lý bằng cách di chuyển file database khỏi thư mục data:
Dừng SQL Server service
Di chuyển file .mdf và .ldf của database lỗi sang thư mục khác
Khởi động lại SQL Server
Database sẽ hiển thị trạng thái "Recovery Pending"
Xóa database lỗi bằng lệnh:
sql
DROP DATABASE [DatabaseName];
📝 Các bước khắc phục chi tiết
Bước 1: Xác định database gây lỗi
Kiểm tra SQL Server error log để xác định database nào đang gây lỗi:
File log thường ở:
C:\Program Files\Microsoft SQL Server\MSSQLXX.InstanceName\MSSQL\Log\
Bước 2: Áp dụng phương pháp phù hợp
Chọn một trong các phương pháp trên dựa trên tình huống cụ thể
Bước 3: Khôi phục database (nếu có thể)
Sau khi SQL Server khởi động thành công:
Khôi phục từ backup nếu có
Sử dụng DBCC CHECKDB để sửa chữa
sql
-- Đặt database ở chế độ SINGLE_USER
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- Chạy sửa chữa
DBCC CHECKDB ([DatabaseName], REPAIR_ALLOW_DATA_LOSS);
-- Đặt lại chế độ MULTI_USER
ALTER DATABASE [DatabaseName] SET MULTI_USER;
⚠️ Lưu ý quan trọng
Luôn sao lưu dữ liệu trước khi thực hiện bất kỳ thao tác sửa chữa nào
Trace Flag 3608 chỉ nên dùng tạm thời, gỡ bỏ sau khi xử lý xong
Phương pháp REPAIR_ALLOW_DATA_LOSS có thể gây mất dữ liệu
Kiểm tra nguyên nhân gốc gây lỗi database để tránh tái diễn
💡 Mẹo phòng ngừa
Thiết lập backup thường xuyên và kiểm tra tính toàn vẹn của backup
Sử dụng tính năng Database Consistency Checks (DBCC CHECKDB) định kỳ
Giám sát dung lượng disk và tình trạng hardware
Sử dụng tính năng Auto Close một cách thận trọng
📞 Hỗ trợ
Nếu bạn gặp khó khăn trong quá trình thực hiện, hãy truy cập diễn đàn NQDEV để được hỗ trợ thêm.
Tác giả: Nguyễn Quý - Chuyên gia SQL Server tại NQDEV Ngày cập nhật: 11/09/2025
Last updated
Was this helpful?