Vừa rồi phải hỗ trợ khách hàng gặp tình huống khá đặc biệt là không biết là vì tại sao mà tự dựng file databse SQL Server đáng nhẽ phải có đủ 2 file là .mdf và .ldf giờ chỉ còn độc mỗi 1 cái .mdf thôi. Bình thường khi có đủ cả 2 file .mdf và .ldf thì việc attach database thật đơn giản. Nhưng ở tình huống này thì theo cách thông thường không thể attach database được.
Thực ra thì với MS SQL thì quan trọng nhất là cái file .mdf này, nó là file chứa tất tần tật bảng biểu, store, view, funtion và cả data nữa. Vì vậy đừng quá lo lắng nhưng… cái "khốn khổ" thường nằm sau cái chữ “nhưng” này 😀. Nhưng tìm mọi cách trên mạng mà không thể attach được, nó báo đủ loại lỗi và kết quả là… thất bại, chỉ các thông báo lỗi và lỗi. Tôi đã mất hơn 2 giờ đồng hồ để thử các cách từ Google.
Nhưng may mắn là tìm được cách xử lý đơn giản này mà lại thành công cao - dù không phải là cao siêu gì cả như nhiều cách khác theo hướng dẫn của Google mà vẫn thất bại. Cụ thể có một hướng dẫn như sau:
Shahab | May 20, 2012 at 11:17 am
I had a situation where non of those methods work, bu this method worked for me fine:
1) Create database with same name as MDF file you have.
2) Stop SQL Server and swap MDF files. Make sure you also keep new database you just created.
3) Start SQL Server. Database will be now in suspect state because log file is not correct.
4) Run the following script:
USE [master]
GO
ALTER DATABASE [MyDatabase] SET EMERGENCY
GO
ALTER DATABASE [MyDatabase] SET SINGLE_USER
GO
DBCC CHECKDB ([MyDatabase], REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE [MyDatabase] SET MULTI_USER
GO
ALTER DATABASE [MyDatabase] SET ONLINE
GO
Đại khái anh ấy bảo như sau:
1) Tạo một database có cái tên giống như cái tên database có đuôi MDF.
2) Dừng SQL Server lại, xóa file có tên MDF của database vừa mới tạo đi, sau đó chép file MDF cần attach vào đúng thư mục chứa file vừa xóa.
3) Khởi động lại SQL Server. Khi mở SQL Server Management Tools thì database sẽ bị lỗi, bởi vì file log .LDF này là không có đúng cơ mà.
4) Để chỉnh lại cho nó đúng thì vào SQL Server Management Tools dùng Execute query của SQL Server chạy dòng lệnh (thay tên database cho đúng tên dữ liệu của bạn).
Dòng lệnh để attach database thành công |
Chú ý: việc chạy New Query này cần thực hiện câu lệnh chính xác để thành công ngay từ lần đầu tiên nhé. Khi thực hiện có thông báo thành công (tức không có thông báo lỗi) có nghĩa là bạn đã attach thành công file database SQL Server mà chỉ còn mỗi file .MDF rồi đấy.
Tôi đã thực hiện theo hướng dẫn cách Attach database SQL Server khi không có file LDF mà chỉ có file MDF kết quả đã thành công và tôi tin bạn làm đúng thì cũng sẽ thành công giống như tôi vậy.
Theo Cao Trung Hiếu viết lại hướng dẫn