Lỗi khôi phục cơ sở dữ liệu SQL Server: truyền được chỉ định không hợp lệ. (SqlManagerUI)


91

Tôi đang sử dụng SQL Server 2008 R2 Standard (phiên bản 10.50.1600.1) cho trang web sản xuất của mình và phiên bản SQL Server Express với Dịch vụ nâng cao (v10.50.1600.1) cho máy chủ cục bộ của tôi làm cơ sở dữ liệu.

Vài ngày trước, SQL Server của tôi gặp sự cố và tôi phải cài đặt phiên bản 2008 R2 Express mới trên máy chủ cục bộ của mình. Nó hoạt động tốt khi tôi khôi phục một số phiên bản cũ hơn được lấy từ phiên bản Express nhưng khi tôi cố gắng khôi phục cơ sở dữ liệu từ .baktệp được lấy từ máy chủ sản xuất, nó gây ra lỗi sau:

Lỗi: Truyền được chỉ định không hợp lệ. (SqlManagerUI)

và khi tôi cố gắng khôi phục cơ sở dữ liệu bằng lệnh

Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications.bak'
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'

Nó tạo ra một lỗi khác

Msg 3154, Mức 16, Trạng thái 4, Dòng 1
Bộ sao lưu giữ một bản sao lưu của cơ sở dữ liệu khác với cơ sở dữ liệu 'Ấn phẩm' hiện có.
Msg 3013, Mức 16, Trạng thái 1, Dòng 1
CƠ SỞ KHÔI PHỤC CƠ SỞ DỮ LIỆU đang kết thúc bất thường.

Tôi đã kiểm tra chéo các phiên bản. Tất cả chúng có vẻ phù hợp với tôi như thể hiện trong hình ảnh bên dưới

Trước đây, tôi đã có thể khôi phục cơ sở dữ liệu từ phiên bản tiêu chuẩn sang phiên bản express nhưng bây giờ nó không thành công. Tôi đã xóa cơ sở dữ liệu và cố gắng tạo lại nó. Điều đó cũng thất bại.

Tôi không chắc mình đang làm gì sai. Tôi sẽ đánh giá cao sự giúp đỡ trong việc này liên quan đến

Sự cố đã được giải quyết vì có vẻ như tệp .bak bị hỏng. Khi tôi thử nó với một tệp khác, nó hoạt động.


Tôi không chuyên nghiệp trong việc này, nhưng câu hỏi nhanh, liệu arhitecture x86 và x64 trong cơ sở dữ liệu có tương thích không?
Gustav Klimt

Tôi đã khôi phục cơ sở dữ liệu trước đó vào thời điểm đó tôi không gặp phải bất kỳ vấn đề nào như vậy. đối với một số lý do bây giờ nó tạo ra lỗi tôi không chắc chắn nếu máy chủ cơ sở dữ liệu đối chiếu được tạo ra bất kỳ vấn đề
Học

Thử thêm ,REPLACEvào lệnh T-SQL để ghi đè cơ sở dữ liệu AlHabtoorPublications hiện có.
SchmitzIT

Tôi gặp sự cố tương tự tại nơi làm việc hôm nay .. Có vẻ như kiểm tra kích thước tệp bài đăng khi chuyển FTP không đủ. Có vẻ như tập tin rất nhạy cảm. Đã giải quyết vấn đề bằng cách nén tệp trước khi thực hiện chuyển.
rofans91

Tình huống Tôi đã sao lưu cơ sở dữ liệu trên SQL SERVER 2008 và thử khôi phục nó trên SQL SERVER 2008 R2. Lý tưởng nhất, nó sẽ hoạt động tốt nhưng trong khi chọn tệp sao lưu, SQL Management Studio 2208 R2 đã gây ra lỗi "Diễn viên được chỉ định không được chỉ định. (SqlManagerUI)". Lý do & Khắc phục Sự cố Điều này là do tệp .BAK bị hỏng trong quá trình truyền FTP (chế độ truyền được đặt thành ASCII). Luôn luôn, hãy nhớ đặt chế độ truyền FTP thành BINARY trong khi chuyển tệp .BAK cơ sở dữ liệu.
Rohan Sarkar

Câu trả lời:


40

GUI đôi khi có thể thay đổi. Lỗi bạn gặp phải khi sử dụng T-SQL là do bạn đang cố gắng ghi đè cơ sở dữ liệu hiện có, nhưng không chỉ định ghi đè / thay thế cơ sở dữ liệu hiện có. Những điều sau đây có thể hoạt động:

Use Master
Go
RESTORE DATABASE Publications
  FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak'
  WITH 
    MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
    MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
, REPLACE -- Add REPLACE to specify the existing database which should be overwritten.

Thật kỳ lạ, tôi đã sử dụng lại tuyên bố ban đầu của bạn. Trong mọi trường hợp, tôi chỉ thign thêm là dòng cuối cùng: , REPLACE
SchmitzIT

1
Trên thực tế, Failed: 38chỉ ra reached end of the file. (Trong cửa sổ lệnh, chạy NET HELPMSG 38). Đó thường chỉ ra một bản sao lưu bị hỏng: stackoverflow.com/questions/5656363/...
SchmitzIT

Tôi đã thử nghiệm khôi phục với tệp .bak cũ hơn một chút, tệp này đã được khôi phục mà không gặp bất kỳ sự cố nào. Có vẻ như tệp .bak cụ thể này bị hỏng
Học

Có thể là kết quả của vụ tai nạn. Nó có thể đã ăn mòn các bộ phận của ổ đĩa. Vui mừng khi biết bạn quản lý để giải quyết vấn đề với một bản sao lưu khác nhau mặc dù :)
SchmitzIT

Tập lệnh của bạn tạo ra lỗi sau Msg 3203, Level 16, State 1, Line 1 Read on "C: \ Publications.bak" không thành công: 38 (không thể truy xuất văn bản cho lỗi này. Lý do: 15105) Msg 3013, Level 16, State 1 , Dòng 1 PHỤC HỒI DATABASE đang kết thúc bất thường.
Học

163

Có thể là do khôi phục tệp sao lưu phiên bản SQL Server 2012 vào SQL Server 2008 R2 hoặc thậm chí ít hơn.


4
Thay vào đó, người ta cần sử dụng "Tạo tập lệnh".
kroiz

4
Đây là vấn đề của tôi. Có vẻ như sẽ không quá khó để MS đưa ra một thông điệp hữu ích hơn cho một số trường hợp này.
John Gilmer

Pinal Dave giải thích lý do ở đây - blog.sqlauthority.com/2015/06/01/…
shvb

15

Cuối cùng, lỗi này phải biến mất khi khôi phục. Tôi đã chuyển sang SQL2012 vì thất vọng, nhưng tôi đoán điều này có thể sẽ vẫn hoạt động trên 2008R2. Tôi đã phải sử dụng các tên hợp lý:

RESTORE FILELISTONLY
FROM DISK = location of your.bak file

Và từ đó tôi chạy một câu lệnh khôi phục với MOVEviệc sử dụng các tên hợp lý.

RESTORE DATABASE database1
FROM DISK = '\\database path\database.bak'
WITH
MOVE 'File_Data' TO 'E:\location\database.mdf',
MOVE 'File_DOCS' TO 'E:\location\database_1.ndf',
MOVE 'file' TO 'E:\location\database_2.ndf',
MOVE 'file' TO 'E:\location\database_3.ndf',
MOVE 'file_Log' TO 'E:\location\database.ldf'

Khi nó được khôi phục xong, tôi gần như bật khóc vì sung sướng.

Chúc may mắn!


4

Dưới đây có thể là 2 lý do cho vấn đề này:

  1. Sao lưu được thực hiện trên SQL 2012 và Khôi phục Headeronly đã được thực hiện trong SQL 2008 R2

  2. Phương tiện sao lưu bị hỏng.

Nếu chúng tôi chạy lệnh dưới đây, chúng tôi có thể tìm thấy lỗi thực sự luôn:

restore headeronly
from disk = 'C:\Users\Public\Database.bak'

Cung cấp vị trí đầy đủ của tệp cơ sở dữ liệu của bạn trong hộp thoại quot

Hy vọng nó giúp

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.