Làm cách nào để đính kèm cơ sở dữ liệu mà không có tệp LDF trong SQL Server?Cách đính kèm cơ sở dữ liệu không có tệp LDF?
Trả lời
Bạn có thể sử dụng sp_attach_single_file_db để đính kèm cơ sở dữ liệu thiếu tệp nhật ký của nó.
Lỗi này cho biết: Không thể mở cơ sở dữ liệu mới 'SharedCS'. CREATE DATABASE bị hủy bỏ. Lỗi kích hoạt thiết bị. Tên tệp vật lý 'd: \ Program Files \ Microsoft SQL Server \ MSSQL \ data \ dummy_Log.LDF' có thể không chính xác. – Ricardo
Đừng cố đính kèm một bản ghi giả. Bạn có thể đăng lệnh sp_attach_single_file_db bạn đang chạy không? –
Điều này chỉ hoạt động nếu tệp nhật ký có thể được tạo lại ở nơi .mdf cho biết. – Joshua
Bạn có thể "chỉ cần làm điều đó" nó sẽ ném một cảnh báo rằng nó không thể tìm thấy .ldf, nhưng nó vẫn sẽ đính kèm db.
Nó đưa ra một lỗi và cơ sở dữ liệu không được đính kèm. – Ricardo
Bạn có thể thử những gì được đăng here bởi MohammedU. Về cơ bản, những gì anh ta sử dụng lệnh DBCC REBUILD_LOG. Nó sẽ hoạt động tùy thuộc vào phiên bản máy chủ của bạn.
Dưới đây là các bước (không có thêm chi tiết):
- Đổi tên file MDF hiện có để .mdf_old
- Create a new database với cùng MDF và file .LDF như cũ.
- Dừng máy chủ sql
- Rename MDF và .LDF file của db mới để .mdf_old và .ldf_old
- Rename .mdf_old để MDF
- Bắt đầu máy chủ sql
- Bạn sẽ thấy db trong chế độ nghi ngờ
- Thay đổi bối cảnh cơ sở dữ liệu thành Master và cho phép cập nhật bảng hệ thống
- Đặt cơ sở dữ liệu ở chế độ Emergency (bypass recovery).
- Dừng và khởi động lại máy chủ SQL.
- Tạo lại nhật ký.
- Đặt cơ sở dữ liệu ở chế độ một người dùng và chạy DBCC CHECKDB để xác thực tính nhất quán của vật lý.
- Tắt các bản cập nhật cho các bảng hệ thống.
Làm cách nào để thực hiện các bước từ 8 đến 13? –
Nếu bạn gặp sự cố, hãy xác minh rằng tệp mdf không phải là chỉ đọc.
EXEC sp_attach_single_file_db @dbname = 'DBNAME',@physname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DBNAME_Data.mdf';
Tôi đã thử và đã hoạt động ... Hy vọng điều này sẽ hữu ích.
Hãy thử bước này thông qua SQL Server Management Studio
- mở SSMS và thực hiện một click chuột phải trên cơ sở dữ liệu.
- Chọn Đính kèm tùy chọn
- Sau đó nhấp vào thêm để đính kèm tệp MDF.
- Chọn tập tin từ danh sách và click vào Ok
- Bây giờ màn hình hiển thị tập tin MDF và LDF Tệp (Không tìm thấy)
- Chọn File LDF và click vào Remove tùy chọn.
- Sau khi xóa tệp LDF, hãy nhấp vào OK.
- tệp MDF được đính kèm thành công trong danh sách cơ sở dữ liệu.
Điều này không hiệu quả đối với tôi. Bạn có thể đề xuất giải pháp khác không? –
đây là một bài viết tuyệt vời về [cách đính kèm mdf mà không có ldf] (http: //www.sqlserverlogexplorer.com/how-to-attach-mdf-file-without-ldf-file /) –
Cố gắng đính kèm nó bằng cách thêm tệp MDF vào hộp thoại Đính kèm cơ sở dữ liệu. Bạn sẽ lưu ý rằng hộp thoại sẽ báo cáo tệp LDF bị thiếu.Thực hiện theo các bước như trên hình ảnh:
Trong SQL Server 2012, nó sẽ không hoạt động. Tôi đã thử. –
Nó hoạt động cho tôi vào năm 2012 thể hiện – Juan
Dưới đây là Code Snippets để programaticaly tạo .LDF file
Sau đây là 3 phương pháp.
Phương pháp -1
Trong trường hợp của tôi, tôi có cơ sở dữ liệu của tôi trong thư mục DATA.
Bạn có thể lấy đường dẫn đầy đủ đến cơ sở dữ liệu của bạn bằng cách nhấp chuột phải và sau đó sẽ tính sau đó bạn có thể sao chép đường dẫn đầy đủ đến cơ sở dữ liệu
của bạn như trong trường hợp của tôi con đường là như sau.
C: \ Program Files \ Microsoft SQL Server \ MSSQL11.DRIBBLEE \ MSSQL \ Data
Bây giờ ở đây là phương pháp đầu tiên bằng cách sử dụng thủ tục lưu trữ (sp_attach_single_file_db) và đi qua nó đối số (tên cơ sở dữ liệu và đường dẫn vật lý)
USE [master]
GO
EXECUTE sp_attach_single_file_db
@dbname='AdventureWorksDW_2012',
@physname=N'C:\ProgramFiles\MicrosoftSQLServer\MSSQL11.DRIBBLEE\MSSQL\DATA\AdventureWorksDW2012_Data.mdf'
GO
thực thi mã mà bạn sau khi thực thi mã, chuyển đến thư mục cơ sở dữ liệu của bạn nơi nó cư trú, bạn sẽ thấy tệp .ldf được tạo ở đằng kia.
Tuy nhiên bạn sẽ nhận được thông báo sau trong
The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW2012_log.ldf" may be incorrect.
New log file 'C:\Program Files\Microsoft SQL Server\MSSQL11.DRIBBLEE\MSSQL\DATA\AdventureWorksDW_2012_log.ldf' was created.
Bây giờ bạn có thể đính kèm cơ sở dữ liệu của bạn của bạn và sau Gắn Cơ sở dữ liệu click chuột phải vào tên máy chủ của bạn trong Object Explorer và làm mới.
Method-2
NẾU cơ sở dữ liệu của bạn có một hoặc nhiều file log mất tích, bạn có thể sử dụng sau
CREATE DATABASE db_namehere ON
(
FILENAME=N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\db_namehere.mdf')
FOR ATTACH_REBUILD_LOG
GO
Phương-3
Nếu bạn sở dữ liệu chỉ có một bản ghi tệp missig bạn có thể sử dụng số này
CREATE DATABASE db_name ON
(FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\TestDb.mdf')
FOR ATTACH
GO
Bạn có thể đọc thêm trong BOOKs Online để biết thêm thông tin.
- 1. Đính kèm cơ sở dữ liệu không cho máy chủ
- 2. Đang cố gắng để tách đính kèm cơ sở dữ liệu - không thể acces db sau
- 3. Cố gắng đính kèm cơ sở dữ liệu có tên tự động Lỗi
- 4. Không thể Đính kèm cơ sở dữ liệu hoặc Tạo mới một - SQL Server 2008
- 5. Điều gì sẽ xảy ra với kết nối cơ sở dữ liệu không được đính kèm?
- 6. Không thể đính kèm cơ sở dữ liệu Northwind SQL Server 2008 R2
- 7. Lỗi quyền khi đính kèm cơ sở dữ liệu: "Không thể truy cập đường dẫn được chỉ định"
- 8. Cố gắng đính kèm một cơ sở dữ liệu được đặt tên tự động cho tệp .mdf không thành công
- 9. Cách truy vấn số lượng tệp đính kèm từ trường Tệp đính kèm trong Microsoft Access?
- 10. Danh sách Cơ sở dữ liệu được đính kèm bằng lệnh SELECT trong SQLite
- 11. Làm cách nào để đính kèm đối tượng Khung thực thể không phải từ cơ sở dữ liệu?
- 12. Cách lấy dữ liệu từ cơ sở dữ liệu Parse.com
- 13. Cách thay thế tệp cơ sở dữ liệu sqlite hiện có bằng tệp cơ sở dữ liệu mới trong android
- 14. cách thêm tệp đính kèm trong PHPMailer?
- 15. Chuỗi kết nối DB trong Web.config để sử dụng cơ sở dữ liệu .mdf đính kèm sẽ không hoạt động
- 16. MacOSX: thư mới có tệp đính kèm
- 17. Có cơ sở dữ liệu YAML không?
- 18. xóa tệp đính kèm
- 19. Truy vấn trong MSSQL trả về .mdf và .ldf tên tệp/vị trí cho cơ sở dữ liệu cụ thể?
- 20. Xóa (hợp nhất) tệp dữ liệu thứ cấp của cơ sở dữ liệu SQL Server
- 21. Tệp cơ sở dữ liệu bị khóa
- 22. Chia nhỏ tệp mysqldump với nhiều cơ sở dữ liệu, theo cơ sở dữ liệu
- 23. imap - nhận tệp đính kèm
- 24. cách đính kèm tệp vào email từ/thư mục dữ liệu của thiết bị
- 25. Cách chuyển đổi cơ sở dữ liệu Visual Foxpro sang cơ sở dữ liệu SQL Server
- 26. Android: có thể đính kèm tệp vào email mà không cần ghi vào SD không?
- 27. sqlite không thể mở tệp cơ sở dữ liệu được mã hóa hoặc không phải là cơ sở dữ liệu?
- 28. Cách tìm phiên bản tệp cơ sở dữ liệu SQLITE
- 29. Không thể duyệt tệp cơ sở dữ liệu H2?
- 30. Sqlite3, OperationalError: không thể mở tệp cơ sở dữ liệu
Chỉ cần thêm rằng bạn có thể nhận được một cơ sở dữ liệu không nhất quán bằng cách thực hiện việc này. Nó là tốt hơn nhiều để đính kèm nó với LDF ban đầu. Xem https://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/15/632398.aspx –