2013-07-29 12 views
8

Tôi có tệp bak (là tệp cơ sở dữ liệu sao lưu cho máy chủ SQL thể hiện tệp mdf 2005) và tôi nên lấy tệp MDF để tôi có thể làm việc trên các bảng, cách có thể lấy tệp MDF gốc từ tệp bak này không? Tôi đang sử dụng Visual Studio 2012, có cần thiết phải có studio quản lý không? Tôi đã cố gắng khôi phục tập tin bak này vào một cơ sở dữ liệu rỗng trong một hệ thống khác có chứa Sql server express management studio 2008, nhưng nó nói cơ sở dữ liệu không khớp, điều gì đang xảy ra?khôi phục tệp MDF gốc từ tệp bak

Trả lời

5

Nếu bạn đã tạo một cơ sở dữ liệu trống, để ghi đè điều này bằng bản sao lưu, bạn sẽ cần chỉ định tham số WITH REPLACE.

Ngoài ra, bạn có thể phải chỉ định tham số MOVE để đưa tệp vào đúng vị trí.

Bạn sẽ có thể khá dễ dàng tìm thấy các tùy chọn trong giao diện khi thực hiện khôi phục, hoặc cách khác bạn có thể kịch bản nó ra bằng cách sử dụng tài liệu tham khảo ở đây:

How to: Restore a Database to a New Location and Name (Transact-SQL)

+0

cảm ơn nhưng làm cách nào tôi có thể thực hiện hành động này qua mã? nơi tôi nên chạy mẫu mã được cung cấp trong liên kết của bạn? Tôi nên tạo một đối tượng SQLCommand và chạy các script đó? –

+0

Bạn có thể làm điều đó, hoặc bạn có thể chạy các lệnh trong studio quản lý SQL – steoleary

11

Hãy ghi nhớ rằng việc khôi phục một tệp sao lưu cơ sở dữ liệu sẽ không cung cấp các tệp MDF (và LDF) gốc. Cách duy nhất để lấy tệp MDF ban đầu là sao chép nó Bạn có thể thực thi T-SQL được gợi ý bằng cách nhấn mạnh trong Visual Studio, xem thêm tại đây: How to: Run SQL Scripts in Solution Explorer. Bạn cũng có thể làm điều đó trong Studio quản lý SQL Server.

Cơ sở dữ liệu trống bạn đã tạo không giúp được gì nhiều, trừ khi bạn muốn đồng bộ hóa sao lưu với nó. Nhưng bạn cần có công cụ của bên thứ 3

Trước tiên, hãy thực hiện như sau để tìm ra tên tệp logic trong bản sao lưu của bạn. Ví dụ này là dành cho các sao lưu tên TestFull.bak lưu trữ trong E: \ Test

RESTORE FILELISTONLY 
FROM DISK = 'E:\Test\TestFull.bak' 
GO 

enter image description here

Tên logic nên được sử dụng trong kịch bản tiếp theo. Ngoài ra, hãy cập nhật đường dẫn và tên được sử dụng

RESTORE DATABASE YourDB 
FROM DISK = 'E:\Test\TestFull.bak' 
WITH MOVE 'test1' TO 'E:\test\TestMDFFile.mdf', 
MOVE 'test1_log' TO 'E:\test\TestLDFFile.ldf' 
+0

nhờ Milena, tôi đã có tệp MDF bằng Management Studio, nhưng thực tế tôi nên thực hiện thao tác này thông qua mã, tức là người dùng của tôi có thể đọc dữ liệu từ tệp bak, vì vậy tôi có thể khôi phục MDF từ tệp bak qua mã và sau đó kết nối với MDF và đọc cơ sở dữ liệu, làm cách nào tôi có thể thực hiện thao tác này trong mã C#? có mẫu nào không? –

+0

@Ali_dotNet Tôi không thể trợ giúp với C# :( –

+0

ok, bạn có sử dụng ngôn ngữ khác không? –