Chuyển tới nội dung chính

Khắc phục lỗi SQL Server không khởi động được trên Windows

Giới Thiệu

SQL Server là một hệ quản trị cơ sở dữ liệu quan trọng, và việc nó không khởi động được có thể gây gián đoạn nghiêm trọng cho các ứng dụng và dịch vụ phụ thuộc. Lỗi này có thể xuất phát từ nhiều nguyên nhân khác nhau, từ các vấn đề về tài khoản dịch vụ, dung lượng ổ đĩa, cấu hình mạng cho đến lỗi trong file cơ sở dữ liệu. Bài viết này sẽ hướng dẫn bạn các bước xử lý một cách có hệ thống để chẩn đoán và khắc phục lỗi SQL Server không khởi động được trên hệ điều hành Windows.

📋 Thời gian: 30-60 phút | Độ khó: Trung bình

Yêu Cầu

Để thực hiện các bước trong hướng dẫn này, bạn cần:

  • Quyền quản trị (Administrator) trên máy chủ Windows nơi SQL Server được cài đặt.
  • Hiểu biết cơ bản về Windows Services và Event Viewer.
  • Truy cập vào các file cài đặt SQL Server (tùy chọn, trong trường hợp cần sửa chữa).

Các Bước Thực Hiện

Khi SQL Server không khởi động, cách tiếp cận tốt nhất là kiểm tra từng thành phần một cách có hệ thống.

Bước 1: Kiểm tra trạng thái dịch vụ SQL Server

Đầu tiên, hãy kiểm tra xem dịch vụ SQL Server có đang chạy hay không và thử khởi động thủ công.

  1. Mở Services Manager: Nhấn Win + R, gõ services.msc và nhấn Enter.
  2. Tìm các dịch vụ liên quan đến SQL Server (ví dụ: SQL Server (MSSQLSERVER) cho instance mặc định, hoặc SQL Server (TÊN_INSTANCE) cho instance có tên).
  3. Kiểm tra cột "Status". Nếu trạng thái không phải là "Running", hãy thử chuột phải vào dịch vụ và chọn "Start". ⚠️ Nếu dịch vụ không khởi động và báo lỗi, hãy ghi lại thông báo lỗi chính xác.
# Mở Services Manager
services.msc

# Hoặc dùng PowerShell để kiểm tra và khởi động dịch vụ
# Thay "MSSQLSERVER" bằng tên instance của bạn nếu cần (ví dụ: "MSSQL$SQLEXPRESS")
Get-Service -Name "MSSQLSERVER"

# Thử khởi động dịch vụ
Start-Service -Name "MSSQLSERVER"

# Nếu có lỗi khi khởi động bằng PowerShell, bạn sẽ thấy thông báo chi tiết hơn.

Bước 2: Kiểm tra Event Viewer

Event Viewer là nơi lưu trữ các nhật ký hệ thống và ứng dụng, cung cấp thông tin quý giá về nguyên nhân lỗi.

  1. Mở Event Viewer: Nhấn Win + R, gõ eventvwr.msc và nhấn Enter.
  2. Điều hướng đến Windows Logs -> Application.
  3. Lọc nhật ký theo "Source": Tìm kiếm các sự kiện có Source là MSSQLSERVER hoặc SQL Server.
  4. Điều hướng đến Windows Logs -> System.
  5. Tìm kiếm các lỗi liên quan đến dịch vụ SQL Server, đặc biệt là các lỗi có ID 7000, 7001, 7023, 7024, 7034, 7036. 💡 Các thông báo lỗi trong Event Viewer thường cung cấp manh mối rõ ràng về nguyên nhân, ví dụ: "Login failed for user...", "Operating system error 5 (Access is denied)", "Not enough disk space".

Bước 3: Kiểm tra tài khoản dịch vụ SQL Server

Tài khoản mà dịch vụ SQL Server sử dụng để chạy phải có đủ quyền.

  1. Trong Services Manager (từ Bước 1), chuột phải vào dịch vụ SQL Server và chọn Properties.
  2. Chuyển sang tab Log On.
  3. Kiểm tra tài khoản được cấu hình (This account hoặc Local System account).
    • Nếu là tài khoản người dùng (domain user hoặc local user), hãy đảm bảo mật khẩu không bị thay đổi và tài khoản đó có quyền "Log on as a service". Bạn có thể thử nhập lại mật khẩu.
    • Nếu là tài khoản Local System, thường ít gặp vấn đề về quyền trừ khi có cấu hình bảo mật quá chặt chẽ. ⚠️ Đảm bảo tài khoản dịch vụ có quyền truy cập đọc/ghi đầy đủ vào các thư mục chứa file dữ liệu (.mdf), file nhật ký (.ldf) và file nhật ký lỗi SQL Server (ERRORLOG).

Bước 4: Kiểm tra dung lượng ổ đĩa

Thiếu dung lượng ổ đĩa là một trong những nguyên nhân phổ biến khiến SQL Server không thể khởi động.

  1. Kiểm tra dung lượng trống trên các ổ đĩa mà SQL Server lưu trữ file dữ liệu (.mdf), file nhật ký (.ldf) và file nhật ký lỗi (ERRORLOG).
  2. Nếu một trong các ổ đ đĩa này đầy, SQL Server sẽ không thể ghi thêm dữ liệu hoặc nhật ký, dẫn đến không thể khởi động. 💡 Giải phóng dung lượng ổ đĩa bằng cách xóa các file không cần thiết, di chuyển file sang ổ đĩa khác, hoặc tăng kích thước ổ đĩa. Đặc biệt chú ý đến ổ đĩa chứa transaction logs, vì chúng có thể phát triển rất nhanh.

Bước 5: Kiểm tra file ERRORLOG của SQL Server

File ERRORLOG của SQL Server chứa các thông báo chi tiết hơn về quá trình khởi động và lỗi.

  1. Tìm thư mục log của SQL Server. Thông thường là: C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Log\ (thay MSSQLXX.MSSQLSERVER bằng đường dẫn cụ thể của bạn).
  2. Mở file ERRORLOG mới nhất (hoặc ERRORLOG.1, ERRORLOG.2 nếu có nhiều file).
  3. Tìm kiếm các từ khóa như "Error", "Failed", "Access denied", "Could not open", "disk full" để xác định nguyên nhân. 💡 Thông báo lỗi trong file ERRORLOG thường rất cụ thể, ví dụ: "Could not open file 'C:...\data.mdf' for NT user 'DOMAIN\ServiceAccount' due to operating system error 5 (Access is denied)."

Bước 6: Kiểm tra cấu hình mạng và cổng TCP/IP

Đôi khi, xung đột cổng hoặc cấu hình mạng sai có thể ngăn SQL Server khởi động.

  1. Đảm bảo không có ứng dụng nào khác đang sử dụng cổng mặc định của SQL Server (1433 cho instance mặc định).
  2. Sử dụng netstat -ano trong Command Prompt để kiểm tra các cổng đang nghe và PID của tiến trình sử dụng cổng đó.
  3. Mở SQL Server Configuration Manager (SCCM), điều hướng đến SQL Server Network Configuration -> Protocols for MSSQLSERVER (hoặc tên instance của bạn) -> TCP/IP.
  4. Đảm bảo TCP/IP được bật và kiểm tra cấu hình cổng trong tab IP Addresses.

Bước 7: Khởi động SQL Server ở chế độ tối thiểu (Minimal Configuration)

Nếu SQL Server vẫn không khởi động, có thể có vấn đề với cấu hình hoặc cơ sở dữ liệu master. Khởi động ở chế độ tối thiểu có thể giúp chẩn đoán.

  1. Mở Command Prompt với quyền Administrator.
  2. Chuyển đến thư mục Binn của SQL Server (ví dụ: cd "C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Binn").
  3. Chạy lệnh sau để khởi động SQL Server ở chế độ tối thiểu:
    sqlservr.exe -f -m -T3683
    • -f: Khởi động ở chế độ cấu hình tối thiểu.
    • -m: Khởi động ở chế độ người dùng đơn (single-user mode), cho phép chỉ một kết nối.
    • -T3683: Trace flag để ngăn SQL Server tự động phục hồi tất cả các cơ sở dữ liệu, hữu ích nếu một cơ sở dữ liệu cụ thể bị lỗi. 💡 Nếu SQL Server khởi động thành công ở chế độ này, vấn đề có thể liên quan đến cấu hình, tài nguyên hoặc một cơ sở dữ liệu người dùng cụ thể. Bạn có thể kết nối và kiểm tra các cấu hình hoặc sửa chữa cơ sở dữ liệu.

Bước 8: Sửa chữa cài đặt SQL Server

Nếu tất cả các bước trên không giải quyết được vấn đề, có thể các file cài đặt SQL Server bị hỏng.

  1. Sử dụng đĩa cài đặt SQL Server hoặc file ISO.
  2. Chạy setup.exe.
  3. Trong cửa sổ SQL Server Installation Center, chọn Maintenance -> Repair.
  4. Làm theo hướng dẫn để sửa chữa cài đặt SQL Server.

Troubleshooting

  • Lỗi: "Log on as a service" permission (Lỗi 5: Access is denied)
    • Cách xử lý: Mở Local Security Policy (secpol.msc), điều hướng đến Local Policies -> User Rights Assignment. Tìm Log on as a service, thêm tài khoản dịch vụ SQL Server vào danh sách. Nếu là tài khoản domain, kiểm tra Group Policy.
  • Lỗi: SQL Server Configuration Manager không mở được
    • Cách xử lý: Thử cài đặt lại hoặc sửa chữa SQL Server Client Tools. Đảm bảo bạn đang chạy với quyền Administrator.
  • Lỗi: Corrupted database files
    • Cách xử lý: Nếu file master bị hỏng, bạn có thể cần xây dựng lại cơ sở dữ liệu master từ đầu (cần kiến thức chuyên sâu và cẩn thận). Nếu là cơ sở dữ liệu người dùng, hãy thử khôi phục từ bản sao lưu gần nhất.
  • Lỗi: "Operating system error 21 (The device is not ready.)"
    • Cách xử lý: Lỗi này thường liên quan đến các ổ đĩa hoặc đường dẫn không khả dụng, đặc biệt là các ổ đĩa mạng hoặc ổ đĩa USB đã bị ngắt kết nối. Đảm bảo tất cả các đường dẫn đến file .mdf.ldf đều hợp lệ và có sẵn.

Kết Luận

Việc SQL Server không khởi động là một vấn đề nghiêm trọng, nhưng bằng cách tiếp cận có hệ thống và kiểm tra từng nguyên nhân tiềm ẩn, bạn có thể chẩn đoán và khắc phục hầu hết các sự cố. Luôn bắt đầu từ Event Viewer và ERRORLOG của SQL Server để có được manh mối tốt nhất.

Best practices:

  • Sao lưu định kỳ: Luôn có bản sao lưu cơ sở dữ liệu đầy đủ và cập nhật.
  • Theo dõi dung lượng ổ đĩa: Đảm bảo đủ không gian trống trên các ổ đĩa chứa file SQL Server.
  • Kiểm tra nhật ký thường xuyên: Thường xuyên xem xét Event Viewer và ERRORLOG để phát hiện sớm các vấn đề tiềm ẩn.
  • Cập nhật bảo mật: Đảm bảo SQL Server và hệ điều hành được cập nhật các bản vá bảo mật mới nhất.
  • Ghi lại cấu hình: Lưu giữ ghi chú về cấu hình SQL Server và tài khoản dịch vụ để dễ dàng khắc phục sự cố.

Xem thêm: