Nhập tệp .bak vào cơ sở dữ liệu trong máy chủ SQL


230

Tôi có một tập tin với .bakphần mở rộng.

Làm cách nào tôi có thể nhập ngày này vào cơ sở dữ liệu trong SQL Server?


Tôi giả sử bạn đang sử dụng MSSQL, đây là một chủ đề giải thích một vài cách bạn có thể khôi phục.
Andrew Keith

Bạn có thể tạo cơ sở dữ liệu trống và khôi phục dữ liệu về dataBase trống, sử dụng .bak
Michel Ayres

Cách tốt nhất là câu trả lời thứ 3, Cơ sở dữ liệu Nhấp chuột phải, nhập, thiết bị, chọn tệp .bak, đã hoàn tất.
Mafii

Ai đó có thể mở rộng câu trả lời cho một giải pháp thân thiện tự động hóa? Đi qua UI và thực hiện vài lần nhấp chuột không hiệu quả lắm.
L. Holanda

Câu trả lời:


251

Trên SQL Server Management Studio

  1. Bấm chuột phải vào Cơ sở dữ liệu trên khung bên trái (Object Explorer)
  2. Nhấp vào Khôi phục cơ sở dữ liệu ...
  3. Chọn thiết bị , nhấp ...và thêm tệp .bak của bạn
  4. Nhấn OK , rồi OK lần nữa

Làm xong.


4
Công việc này như một cái duyên vậy. Đây là những hướng dẫn đơn giản hóa tuyệt vời và về cơ bản chúng là những hướng dẫn tương tự từ liên kết chính thức của Microsoft được ghi chú trong câu trả lời được bình chọn nhiều nhất ở đây.
Leonardo Lopez

3
Nếu điều này không thành công, có lẽ bạn cần phải xóa một cơ sở dữ liệu hiện có.
DigitalDesignDj

3
Điều này không làm việc cho tôi. Tôi chỉ vào đúng thư mục và nó thậm chí không nhìn thấy các tập tin. Tôi dán tên tệp chính xác vào hộp thoại và thông báo tệp không tồn tại. Ngoài ra, hộp thoại nhìn thấy một ổ đĩa không tồn tại trên máy chủ của tôi. Cơ sở dữ liệu có nhớ vị trí của bản sao lưu cuối cùng không và nó có chỉ chấp nhận khôi phục từ thời điểm đó không? Tôi thấy rất kỳ lạ là tôi không thể chọn một tập tin sao lưu để khôi phục.
James

13
Tệp .BAK của tôi nằm trong thư mục "Tải xuống" tồn tại bên dưới tài khoản người dùng của tôi. Tôi đã phải di chuyển tệp .BAK vào thư mục gốc của C: để công cụ này nhìn thấy nó và cho phép tôi khôi phục từ nó. Các tập tin bên dưới người dùng của tôi không được nhìn thấy vì một số lý do.
jeremysawgie

6
Điều này không hoạt động. Tôi nhấp chuột phải vào "Cơ sở dữ liệu" nhưng không có "Khôi phục cơ sở dữ liệu ...".
user34660

53

Các tập tin .bak là bản sao lưu cơ sở dữ liệu. Bạn có thể khôi phục bản sao lưu bằng phương pháp bên dưới:

Cách: Khôi phục sao lưu cơ sở dữ liệu (SQL Server Management Studio)


8
Điều này không hoạt động. Bài viết cho biết: "... 2) Mở rộng cơ sở dữ liệu. Tùy thuộc vào cơ sở dữ liệu, chọn cơ sở dữ liệu người dùng hoặc mở rộng Cơ sở dữ liệu hệ thống, sau đó chọn cơ sở dữ liệu hệ thống. 3) Nhấp chuột phải vào cơ sở dữ liệu , trỏ đến Nhiệm vụ, sau đó bấm Khôi phục lại. " KHÔNG PHẢI! Bạn không thể nhấp chuột phải vào cơ sở dữ liệu không tồn tại! Sau đó, bạn đang cố gắng khôi phục hoặc nhập cơ sở dữ liệu đã cho. Làm thế nào bạn có thể nhấp chuột phải vào cơ sở dữ liệu không được tải? Sự kỳ quái của MSDN và làm nặng thêm chức năng khôi phục trong SSMS được nêu nhưng không hoạt động. Tại sao? May mắn thay, các lệnh SQL mà người khác đưa ra ở đây hoạt động.
Nicholas Petersen

14
Có một bài viết khác để khôi phục cơ sở dữ liệu mới được tìm thấy ở đây: msdn.microsoft.com/en-us/l
Library / ms186390 (v = sql.90) .aspx

35
RESTORE FILELISTONLY 
FROM DISK = 'D:\3.0 Databases\DB.bak' 

RESTORE DATABASE YourDB
FROM DISK = 'D:\3.0 Databases\DB.bak' 

và bạn phải di chuyển các tệp mdf, ndf & ldf thích hợp bằng cách sử dụng

 With Move 'primarydatafilename' To 'D:\DB\data.mdf', 
 Move 'secondarydatafile'To 'D:\DB\data1.ndf', 
 Move 'logfilename' To 'D:\DB\log.ldf'

1
Điều này rất hữu ích cho tôi vì tôi muốn khôi phục tệp .bak trên bộ chứa Docker sql với máy chủ macOS bằng Azure Data Studio. Tất cả những gì tôi phải làm là sao chép .bak vào vùng chứa, điều chỉnh đường dẫn và thay đổi thành /, và tôi đã có thể khôi phục thành công.
andrewb

Rất vui vì nó đã giúp @andrewb :)
RameshVel

30

Bạn chỉ có thể khôi phục các tệp sao lưu cơ sở dữ liệu này bằng các phương thức SQL Server gốc hoặc bạn có thể sử dụng công cụ Khôi phục ApexQuery để nhanh chóng đính kèm các tệp và truy cập chúng dưới dạng cơ sở dữ liệu được khôi phục hoàn toàn.

Tuyên bố miễn trừ trách nhiệm: Tôi làm Kỹ sư hỗ trợ sản phẩm tại ApexSQL


18

Thay vì chọn Khôi phục cơ sở dữ liệu ..., hãy chọn Khôi phục tệp và nhóm ...

Sau đó nhập tên cơ sở dữ liệu, chọn đường dẫn tệp .bak của bạn làm nguồn, chọn hộp kiểm khôi phục và nhấp vào Ok. Nếu tệp .bak hợp lệ, nó sẽ hoạt động.

(Tên tùy chọn khôi phục SQL Server không trực quan cho nhiệm vụ rất đơn giản.)


Đây là lời khuyên tốt, tôi đã làm điều này và nó báo cáo rằng việc khôi phục đã thành công. Nhưng một chút vấn đề vẫn còn ... cơ sở dữ liệu không được liệt kê trong trình thám hiểm đối tượng. Tôi thử "đính kèm" và thậm chí nó có sẵn tệp .mdf chính xác (tôi đoán là một sản phẩm của khôi phục). Nếu tôi thử đính kèm, nó sẽ báo lỗi rằng nó đã được sử dụng. Bạn có bất cứ lời khuyên cho giai đoạn này?
AlanSE

Hãy chắc chắn để làm mới ở cuối để xem cơ sở dữ liệu mới của bạn. Đây có thể là giải pháp nhanh nhất để thức dậy và chạy.
demongolem

Đây là tùy chọn phù hợp với tôi khi muốn nhập cùng một cơ sở dữ liệu .bak làm cơ sở dữ liệu mới tại địa phương
Gurnzbot

7
  1. Kết nối với máy chủ mà bạn muốn lưu trữ DB của bạn
  2. Bấm chuột phải vào Cơ sở dữ liệu
  3. Nhấp vào Khôi phục
  4. Chọn nút radio Thiết bị trong phần nguồn
  5. Nhấp vào Thêm.
  6. Điều hướng đến đường dẫn nơi tệp .bak của bạn được lưu trữ, chọn tệp đó và nhấp vào OK
  7. Nhập đích của DB của bạn
  8. Nhập tên mà bạn muốn lưu trữ DB của mình
  9. Nhấn vào OK

Làm xong


4

Đơn giản chỉ cần sử dụng

sp_restoredb 'Tên cơ sở dữ liệu của bạn', 'Vị trí bạn muốn khôi phục'

Ví dụ: sp_restoredb 'omDB', 'D: \ abc.bak'


sự khác biệt giữa cái này và RESTORE DATABASEnhư trong msdn.microsoft.com/en-us/l Library / ms178099 ( v = sql.105) .aspx ?
unhammer

1
Khôi phục cơ sở dữ liệu chỉ thực hiện thao tác khôi phục nếu cấu trúc DB của bạn giống như tệp sao lưu, nhưng sp_restoredbthực hiện khôi phục ngay cả cơ sở dữ liệu của bạn có cấu trúc khác hoặc hoàn toàn trống (mới).
Tomprakash tomar

3
  1. Sao chép tệp .bak sao lưu của bạn ở vị trí sau trên máy tính của bạn: C: \ Chương trình tệp \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS \ MSSQL \ DATA
  2. Kết nối với máy chủ mà bạn muốn lưu trữ DB của bạn
  3. Bấm chuột phải vào Cơ sở dữ liệu
  4. Nhấp vào Khôi phục
  5. Chọn nút radio Thiết bị trong phần nguồn
  6. Nhấp vào Thêm.
  7. Điều hướng đến đường dẫn nơi tệp .bak của bạn được lưu trữ, chọn tệp đó và nhấp vào OK
  8. Nhập đích của DB của bạn
  9. Nhập tên mà bạn muốn lưu trữ DB của mình
  10. Nhấn vào OK

Các giải pháp trên đã bỏ lỡ nơi giữ tệp sao lưu (.bak) của bạn. Cái này cần phải dùng mẹo. Nó làm việc cho tôi.


1

Bạn có thể sử dụng gói nút, nếu bạn thường xuyên cần khôi phục cơ sở dữ liệu trong quá trình phát triển.

Tải về:

npm install -g sql-bak-restore

Sử dụng:

sql-bak-restore <bakPath> <dbName> <oldDbName> <owner>

Tranh luận:

  • đường dẫn, đường dẫn tương đối hoặc tuyệt đối đến tập tin
  • dbName, cơ sở dữ liệu cần khôi phục (cơ sở dữ liệu có tên này sẽ bị xóa nếu tồn tại !!)
  • oldDbName, tên cơ sở dữ liệu (nếu bạn không biết, chỉ định một cái gì đó và chạy, bạn sẽ thấy cơ sở dữ liệu có sẵn sau khi chạy.)
  • chủ sở hữu, tên người dùng để tạo và cung cấp cho anh ta đặc quyền db_owner (mật khẩu "1")

!! tiện ích dòng lệnh sqlcmd phải nằm trong biến PATH của bạn.

https://github.com/vladimirbuskin/sql-bak-restore/


1

Trên Microsoft SQL Server Management Studio 2019:

nhập mô tả hình ảnh ở đây

Trên cửa sổ Khôi phục cơ sở dữ liệu:

  1. Chọn thiết bị

  2. Chọn Thêm và chọn tệp mục tiêu

  3. OK để xác nhận

  4. OK để xác nhận khôi phục

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.