Không có bản sao lưu nào được chọn để khôi phục


150

Tôi có cơ sở dữ liệu SQL Server 2012 với tính năng filestream. Tuy nhiên, khi tôi sao lưu nó và cố gắng khôi phục nó trên một phiên bản SQL Server 2012 khác (trên một máy khác), tôi chỉ cần nhận được thông báo này:

Không có bản sao lưu được chọn để được khôi phục.

Thậm chí không một dòng giải thích thêm. Có chuyện gì ở đây vậy?

Mọi cơ sở dữ liệu khác mà không có filestream đều ổn và có thể được khôi phục thành công. Nó có phải là một cái gì đó liên quan đến filestream? Tôi nên cài đặt một hotfix hoặc một cái gì đó như thế.


1
Vẫn chưa giải quyết được. Có vẻ như cấu hình SQL Server có vấn đề. Tôi nghĩ mọi thứ nên dễ dàng hơn thế này.
Saeed Neamati

1
Bạn có thể cung cấp T-SQL mà bạn đang sử dụng để thử khôi phục không?
Ben Thul

3
Chà, tôi đang sử dụng GUI của SSMS.
Saeed Neamati

Ngay cả khi làm theo cách đó, cần có một nút "script" ở đâu đó gần đầu cửa sổ. Sau khi bạn thiết lập mọi thứ theo cách bạn nghĩ nó sẽ được đặt để khôi phục, hãy nhấn vào đó thay vì "ok" và nó sẽ đưa ra T-SQL sẽ chạy trên máy chủ để khôi phục.
Ben Thul

1
Có phải vấn đề về quyền đối với tôi cũng như với Tiêu chuẩn SQL 2014 (độc lập) trên WS 2012 R2 (nhóm làm việc) nhưng phải khởi động lại hai lần để có quyền 'lấy.' Đối với những gì đáng giá .. Hy vọng tất cả các bạn cũng được giải quyết.
BaldEagle

Câu trả lời:


177

Tôi đã gặp vấn đề này và hóa ra tôi đang cố khôi phục lại phiên bản SQL sai. Nếu bạn muốn biết thêm thông tin về những gì đang diễn ra, hãy thử khôi phục cơ sở dữ liệu bằng SQL sau:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

Điều đó sẽ cung cấp cho bạn thông báo lỗi mà bạn cần gỡ lỗi này.


Bạn nhận được thông báo lỗi nào khi thử khôi phục bằng SQL ở trên?
dùng489998

Có vẻ như việc khôi phục DB bằng cách sử dụng tập lệnh T-SQL sẽ thực hiện công việc. Tôi nghĩ bởi vì chúng tôi chưa sao lưu dữ liệu quay phim, UI không thể xử lý nó.
Saeed Neamati

1
Đẹp, tôi thích cách tiếp cận SQL thô. Tôi nhận được một thông báo như `Bộ phương tiện có 2 họ phương tiện nhưng chỉ có 1 họ được cung cấp. Tất cả các thành viên phải được cung cấp. '- điều này có nghĩa là nguồn dự phòng là phiên bản SQL Server khác với mục tiêu sao lưu? Khi tôi thử với phương pháp UI ("Khôi phục"), tôi nhận được thông báo @ topNo backupset selected to be restored.
The Red Pea


Nếu bạn muốn thay thế hoàn toàn cơ sở dữ liệu hiện có, hãy sử dụng tùy chọn VỚI REPLACERESTORE DATABASE <YourDatabase> FROM DISK='<the path to your backup file>\<YourDatabase>.bak' WITH REPLACE
Iasmini Gomes

63

Vấn đề của tôi đã kết thúc là quyền . Tôi đang sử dụng máy dev và được sao chép qua Homegroup. Bằng cách nào đó, có lẽ dựa vào nơi tôi đã sao chép tệp vào, các quyền đã bị rối và Management Studio không thể đọc tệp. Vì đây là dev nên tôi chỉ cấp cho mọi người quyền đối với tệp bak và sau đó có thể khôi phục thành công qua GUI.


Điều này cuối cùng cũng làm việc cho tôi. Đó là SO DUMB rằng tên người dùng của tôi có thể có quyền đối với thư mục đó, nhưng cách duy nhất để làm việc này là thêm nhóm "Mọi người" vào quyền trên thư mục. Thật là bực bội, nhưng cảm ơn vì đã tiết kiệm thời gian cho tôi!
Hurle Phonge

5
Hoàn toàn thiếu thông báo lỗi hữu ích trong trường hợp này. Vấn đề của tôi cũng đã được giải quyết bằng cách này.
dodgy_coder

1
Booya! Phải yêu những lỗi chung chung mà không cho bạn biết bất cứ điều gì. Tất nhiên đó là quyền. Đã xảy ra với tôi khi khôi phục từ máy chủ sql trên các tên miền khác nhau. Thay đổi quyền .bak cho phép mọi người. Làm việc tốt sau đó.
Pres Pres

Đã gặp vấn đề tương tự khi cố gắng khôi phục cơ sở dữ liệu từ .baktệp, được tạo bởi dịch vụ web tải lên tệp đang chạy trong IISApplicationPoolIdentity
apdevelop

26

Khi chạy:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

Nó đã cho tôi lỗi sau:

Họ phương tiện trên thiết bị 'C: \ NorthwindDB.bak' được hình thành không chính xác. SQL Server không thể xử lý họ phương tiện truyền thông này. RESTORE HeaderONLY đang chấm dứt bất thường. (Máy chủ Microsoft SQL, Lỗi: 3241) Blockquote

Hóa ra Bạn không thể lấy DB từ phiên bản SQL cao hơn xuống mức thấp hơn, ngay cả khi mức độ tương thích giống nhau trên cả DB nguồn và DB đích. Để kiểm tra phiên bản SQL chạy:

Select @@Version

Để thấy sự khác biệt, chỉ cần tạo DB trên máy chủ SQL nguồn của bạn và thử khôi phục từ tệp sao lưu của bạn, khi bạn thực hiện SSMS whit này, khi bạn chọn tệp sao lưu, nó sẽ hiển thị một số thông tin về nó như bị xóa khi bạn mở nó từ một máy chủ phiên bản thấp hơn sẽ chỉ nói "không có bản sao lưu nào được chọn để khôi phục" nhập mô tả hình ảnh ở đây

Vì vậy, nếu bạn vẫn cần di chuyển dữ liệu của mình sang SQL phiên bản thấp hơn thì hãy kiểm tra Điều này .


vậy nếu tôi lấy bản sao lưu db từ máy có doanh nghiệp máy chủ sql 2014 - nó có thể được khôi phục trên máy chủ sql 2014 express không?
chester89

@ chester89 Tôi nghĩ nó phụ thuộc vào loại chức năng bạn có trong DB. Và các loại sao lưu. Phiên bản express không nhận ra các bản sao lưu nén. Ngoài ra, nếu phiên bản doanh nghiệp đang sử dụng một cái gì đó duy nhất cho doanh nghiệp, phiên bản miễn phí (express) sẽ không nhận ra nó. Nhưng, nếu bạn có một cái gì đó tiêu chuẩn, về mặt lý thuyết nó nên được công nhận.
Juan Acosta

@JuanAcosta yep, tôi đặt nó cùng nhau. Trong trường hợp của tôi, không có chức năng dành riêng cho doanh nghiệp đang sử dụng, vì vậy tôi đã khôi phục bản sao lưu mà không gặp sự cố
chester89

@JuanAcosta bạn có thể chỉ cho tôi một tài liệu nói rằng phiên bản express không thể khôi phục bản sao lưu nén không?
chester89

@Chester vui lòng kiểm tra trang 234 điểm 3. Tùy chọn mặc định là duy nhất có sẵn trong phiên bản express. Books.google.com.vn/au
Juan Acosta

15

Chạy SQL Server Management Studio với tư cách quản trị viên (nhấp chuột phải vào phím tắt / exe, sau đó chọn "Chạy với tư cách quản trị viên"), sau đó thử khôi phục.


10

Tôi nghĩ rằng tôi không đủ ngu ngốc để trộn lẫn các phiên bản - tuy nhiên, tôi đã không nhận ra rằng trên máy chủ mới của mình, một phiên bản SQL Server 2005 đã được cài đặt từ khi sinh ra SQLEXPRESS. Khi cố gắng khôi phục cơ sở dữ liệu sao lưu SQL Server 2008 R2 của tôi trong SSMS 2012 về SQLEXPRESSví dụ, danh sách các bộ sao lưu trống.

Cuối cùng, tôi nhận ra rằng SQLEXPRESSphiên bản trên máy chủ không phải là phiên bản 2012, mà là năm 2005. Tôi đã ngắt kết nối và kết nối với phiên bản 2012 thực tế (trong trường hợp của tôi có tên SQLEXPRESS2012) và nó (rõ ràng) đã hoạt động.


2
Điều này chỉ cho tôi đi đúng hướng cho vấn đề của tôi. Tôi đã nhận được lỗi tương tự như poster ban đầu nhưng đó là do tôi đã cố gắng khôi phục bản sao lưu từ SQL Express 2012 thành phiên bản SQL Server 2008. Có thể hiểu điều này là không nên, rất tiếc là lỗi không đủ mô tả để giải quyết vấn đề gốc.
LeastOne

1
Ồ Tôi đã cài đặt quá nhiều bản sửa lỗi nóng từ trang web nhưng lỗi đó không biến mất. Tôi đã thấy câu trả lời này và đăng nhập với phiên bản Sql Server 2012 và cố gắng khôi phục, CNTT đã làm việc! Huh cảm ơn bạn :)
Ali Baig

1
Vì vậy, bạn nói rằng bạn không thể khôi phục từ phiên bản đầy đủ để thể hiện phiên bản?
Zapnologica

7

Vấn đề của tôi là người dùng của tôi thuộc nhóm Quản trị viên tích hợp và không có người dùng nào có vai trò Sysadmin trên SQL Server. Tôi mới bắt đầu Management Studio với tư cách Quản trị viên. Bằng cách này, nó đã có thể khôi phục cơ sở dữ liệu.


Tôi đã sử dụng bài viết sau để tạo người dùng sysadmin mới (xem Phần 2 bằng chế độ một người dùng): wikihow.com/Reset-SA-Password-in-Sql-Server
Savage

6

FYI: Tôi thấy rằng khi khôi phục, tôi cần sử dụng cùng thông tin đăng nhập (Người dùng SQL) để đăng nhập vào SSMS. Lần đầu tiên tôi đã thử khôi phục bằng tài khoản Windows xác thực.


6

Trong trường hợp của tôi, đó là quyền và thực tế là tôi đã sử dụng "Khôi phục tệp và nhóm tệp ..." thay vì chỉ đơn giản là "Khôi phục cơ sở dữ liệu ...".

Điều đó làm nên sự khác biệt.

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


6

Đối với tôi đó là một vấn đề đặc quyền người dùng. Tôi đã đăng nhập với sa user và nó hoạt động tốt.


5

Đối với tôi, vấn đề là có tệp .BAK nằm trong một thư mục được mã hóa trên máy chủ. Ngay cả với quyền Quản trị viên đầy đủ, tôi không bao giờ có thể nhận được SSMS để đọc tệp. Di chuyển .BAK đến một thư mục không được mã hóa đã giải quyết vấn đề của tôi. Lưu ý rằng sau khi di chuyển tệp, bạn cũng có thể phải thay đổi các thuộc tính trên tệp thực tế để xóa mã hóa (nhấp chuột phải, thuộc tính, nâng cao, bỏ chọn "nội dung mã hóa thành dữ liệu an toàn".


3

Tôi gặp vấn đề tương tự với SQL Server 2014 (Management Studio không thể thấy thư mục chứa tệp sao lưu khi cố gắng xác định vị trí của nó cho hoạt động Khôi phục). Chủ đề này giữ câu trả lời mà giải quyết vấn đề của tôi. Trích dẫn:

Tài khoản dịch vụ SQL Server có thể được tìm thấy bởi Start-> Control Panel-> Công cụ quản trị-> Dịch vụ. Bấm đúp vào dịch vụ SQL Server-> Đăng nhập tab. Bạn sẽ sử dụng "Tài khoản hệ thống cục bộ" hoặc "Tài khoản này" để xác định một tài khoản cụ thể. Nếu bạn đang sử dụng tài khoản Hệ thống cục bộ, bạn sẽ không thể tham chiếu các bản sao lưu không cục bộ trên máy chủ. Nếu, thay vào đó, bạn đã xác định tài khoản sẽ sử dụng, đây là tài khoản cần có quyền truy cập vào vị trí tệp sao lưu. Khả năng truy cập các bản sao lưu bằng cách sử dụng đăng nhập cá nhân của bạn là không liên quan; đó là tài khoản SQL Server được sử dụng, ngay cả khi bạn đang bắt đầu sao lưu. Nhân viên CNTT của bạn sẽ có thể xác định những quyền nào được cấp cho mỗi tài khoản.

Hy vọng rằng sẽ giúp được ai đó.


đánh giá cao rằng bạn đã trích dẫn nguồn ngay tại đây, dễ dàng hơn nhiều để sử dụng thông tin đó mà không cần điều hướng khỏi trang này.
qxotk

3

Trong trường hợp của tôi (cài đặt máy chủ sql mới, người dùng mới được tạo) người dùng của tôi đơn giản là không có sự cho phép cần thiết. Tôi đã đăng nhập vào Studio quản lý dưới dạng sa , sau đó vào Bảo mật / Đăng nhập, nhấp chuột phải vào tên người dùng, Thuộc tính của tôi, sau đó trong phần Vai trò máy chủ mà tôi đã kiểm tra sysadmin.


2

Đối với tôi, đó là vì tệp sao lưu vẫn được mở bởi một quy trình khác. Đây là nhật ký sự kiện:

BackupDiskFile :: OpenMedia: Thiết bị sao lưu 'X: \ Backups \ MyDatabase \ MyDatabase_backup_2014_08_22_132234_8270986.bak' không mở được. Lỗi hệ điều hành 32 (Quá trình không thể truy cập tệp vì nó đang được sử dụng bởi quy trình khác.).

Chỉ cần đóng và mở lại Sql Server Management Studio đã giải quyết nó (vì vậy rõ ràng đó là ssms.exe có xử lý ..)


1

Một lý do tiềm năng khác cho trục trặc này dường như là Google Drive. Google Drive đang nén các tệp bak hoặc một cái gì đó, vì vậy nếu bạn muốn chuyển bản sao lưu cơ sở dữ liệu qua Google Drive, có vẻ như bạn phải nén nó trước.


1

Nếu bạn muốn thay thế hoàn toàn cơ sở dữ liệu hiện có, hãy sử dụng tùy chọn VỚI REPLACE :

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'
WITH REPLACE

1

Trong trường hợp của tôi, đó là một vấn đề quyền.

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

Đối với người dùng Windows, tôi đang sử dụng không có dbcreatorvai trò.

Vì vậy, tôi đã làm theo các bước dưới đây

  1. Kết nối savới máy chủ SQL
  2. Mở rộng Securitytrong Object Explorer
  3. Mở rộng Logins
  4. Nhấp chuột phải vào người dùng Windows trong câu hỏi
  5. Nhấp vào Thuộc tính
  6. Chọn Server Rolestừ Select a pagecác tùy chọn
  7. Kiểm tra dbcreatorvai trò cho người dùng
  8. Nhấn vào OK

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


0

Sử dụng SQL Server 2012 Express.

Lỗi của tôi (từ Trình quản lý SQL - Khôi phục hộp thoại cơ sở dữ liệu):

No backupset selected to be restored

Hơn nữa, không có bản sao lưu nào được hiển thị trong danh sách để chọn.

Vấn đề là tôi đã chuyển 1 trong 5 tệp sao lưu vào một thư mục mà người dùng đăng nhập dịch vụ SQL Server không có quyền - Tôi đã cố thêm người dùng đó, nhưng không thể đưa người dùng NT Service \ MSSQL $ SQLEXPRESS vào bảo mật danh sách.

Tôi đã di chuyển tệp trong thư mục Tài liệu cho người dùng dịch vụ và điều đó cho phép nó đọc tất cả các tệp tôi đã chọn - 4 tại thời điểm đó - và lỗi đã thay đổi thành "phương tiện bị thiếu" - sau đó tôi tìm kiếm một tệp sao lưu khác và khi tôi thêm rằng tôi đã có thể khôi phục.

Các câu trả lời trong câu hỏi này đã giúp tôi tìm đúng chỗ và tìm ra giải pháp.


0

Đối với tôi, đó là một vấn đề cho phép. Tôi đã cài đặt máy chủ SQL bằng tài khoản người dùng cục bộ và trước khi tham gia miền công ty của mình. Sau đó, tôi đã cố gắng khôi phục cơ sở dữ liệu bằng tài khoản miền của mình mà không có quyền cần thiết để khôi phục cơ sở dữ liệu máy chủ SQL. Bạn cần sửa quyền cho tài khoản miền của mình và cấp cho nó quyền quản trị hệ thống trên phiên bản máy chủ SQL mà bạn có.


0

Tôi đã nhận được thông báo lỗi tương tự mặc dù tôi sao lưu và khôi phục trên cùng một máy.

Vấn đề là từ đây: khi sao lưu, tôi có 2 mục trong hộp đích.

Vì vậy, cách khắc phục sẽ là: đảm bảo chỉ có 1 mục trong hộp 'đích'. Loại bỏ tất cả những người khác nếu có.


0

Tôi đã gặp vấn đề tương tự. Chạy SSMS với tư cách quản trị viên sau đó nhấp chuột phải và thực hiện khôi phục cơ sở dữ liệu. Nên làm việc.


0

Tôi nghĩ rằng tôi nhận được giải thưởng cho lý do xương đầu nhất để nhận được lỗi này. Trong hộp thoại Khôi phục cơ sở dữ liệu, danh sách cơ sở dữ liệu trong Nguồn có màu xám và tôi nghĩ rằng nó đã bị tắt. Tôi đã bỏ qua phần thả xuống cơ sở dữ liệu trong Destination nghĩ rằng đó là nguồn và thực hiện lựa chọn. Làm điều này sẽ khiến thông báo lỗi này được hiển thị.

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.