SQL Server 데이터베이스 복원 오류 : 지정된 캐스트가 유효하지 않습니다. (SqlManagerUI)


91

프로덕션 웹 사이트에는 SQL Server 2008 R2 Standard (버전 10.50.1600.1)를 사용하고 로컬 호스트에는 SQL Server Express 에디션 (v10.50.1600.1)을 데이터베이스로 사용하고 있습니다.

며칠 전 SQL Server가 충돌하여 로컬 호스트에 새로운 2008 R2 Express 버전을 설치해야했습니다. Express Edition에서 가져온 일부 이전 버전을 복원하면 제대로 작동했지만 .bak프로덕션 서버에서 가져온 파일 에서 데이터베이스를 복원하려고 하면 다음 오류가 발생합니다.

오류 : 지정된 캐스트가 유효하지 않습니다. (SqlManagerUI)

명령을 사용하여 데이터베이스를 복원하려고 할 때

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'

다른 오류가 발생합니다.

Msg 3154, Level 16, State 4, Line 1
백업 세트는 기존 'Publications'데이터베이스가 아닌 데이터베이스의 백업을 보유합니다.
메시지 3013, 수준 16, 상태 1, 줄 1
RESTORE DATABASE가 비정상적으로 종료됩니다.

버전을 교차 확인했습니다. 아래 이미지와 같이 모두 나와 일치하는 것 같습니다.

이전에는 표준 버전에서 Express 버전으로 데이터베이스를 복원 할 수 있었지만 지금은 실패합니다. 데이터베이스를 삭제하고 다시 만들려고했습니다. 그것도 실패합니다.

내가 뭘 잘못하고 있는지 잘 모르겠습니다. 나는 이와 관련하여 도움을 주시면 감사하겠습니다.

.bak 파일이 손상된 것 같아 문제가 해결 되었습니다. 다른 파일로 시도했을 때 작동했습니다.


im pro는 아니지만 빠른 질문은 데이터베이스의 x86 및 x64 구조가 호환됩니까?
Gustav Klimt 2012

그 당시에는 이전 복원 데이터베이스가 있었지만 그러한 문제는 발생하지 않았습니다. 어떤 이유로 지금 그것은 오류를 생성 데이터베이스 서버 데이터 정렬에 문제가 있는지 확실하지 않습니다
Learning

,REPLACET-SQL 명령에 추가 하여 기존 AlHabtoorPublications 데이터베이스를 덮어 씁니다.
SchmitzIT 2011

나는 오늘 직장에서 같은 문제에 부딪혔다 .. FTP 전송을하고 파일 크기를 확인하는 것이 충분하지 않은 것 같다. 파일이 매우 민감한 것 같습니다. 전송을 실행하기 전에 파일을 압축하여 문제를 해결했습니다.
rofans91 jul

Scenerio SQL SERVER 2008에서 데이터베이스 백업을 수행하고 SQL SERVER 2008 R2에서 복원을 시도했습니다. 이상적으로는 제대로 작동하지만 백업 파일을 선택하는 동안 SQL Management Studio 2208 R2에서 "지정된 캐스트가 지정되지 않았습니다. (SqlManagerUI)"오류가 발생했습니다. 이유 및 문제 해결 FTP 전송 중에 .BAK 파일이 손상 되었기 때문입니다 (전송 모드가 ASCII로 설정 됨). 데이터베이스 .BAK 파일을 전송하는 동안 항상 FTP 전송 모드를 BINARY로 설정해야합니다.
Rohan Sarkar

답변:


40

GUI는 때때로 변덕 스러울 수 있습니다. T-SQL을 사용할 때 발생하는 오류는 기존 데이터베이스를 덮어 쓰려고하지만 기존 데이터베이스를 덮어 쓰거나 바꾸도록 지정하지 않았기 때문입니다. 다음이 작동 할 수 있습니다.

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.

이상하게도 원래 진술을 재사용했습니다. 어쨌든 내가 추가 한 유일한 항목은 마지막 줄이었습니다. , REPLACE
SchmitzIT

1
실제로 Failed: 38reached end of the file. (명령 창에서 실행 NET HELPMSG 38). 일반적으로 손상된 백업을 나타냅니다. stackoverflow.com/questions/5656363/…
SchmitzIT

문제없이 복원 된 약간 오래된 .bak 파일로 복원을 테스트했습니다. 이 특정 .bak 파일이 손상된 것 같습니다
Learning

충돌의 결과 일 수 있습니다. 드라이브의 일부가 잘못되었을 수 있습니다. 하지만 다른 백업으로 문제를 해결할 수 있었다 니 다행입니다. :)
SchmitzIT

스크립트에서 다음 오류 메시지를 생성합니다. 메시지 3203, 수준 16, 상태 1, 줄 1 "C : \ Publications.bak"읽기 실패 : 38 (이 오류에 대한 텍스트를 검색하지 못했습니다. 이유 : 15105) 메시지 3013, 수준 16, 상태 1 , 라인 1 RESTORE DATABASE가 비정상적으로 종료됩니다.
학습

163

SQL Server 2012 버전 백업 파일을 SQL Server 2008 R2 이하로 복원했기 때문일 수 있습니다.


4
대신 "스크립트 생성"을 사용해야합니다.
kroiz 2014-06-24

4
이것은 내 문제였습니다. MS가 이러한 경우 중 일부에 대해 더 유용한 메시지를 제공하는 것이 그리 어렵지 않은 것 같습니다.
John Gilmer 2015 년

Pinal Dave는 여기에 이유를 설명합니다 -blog.sqlauthority.com/2015/06/01/…
shrivb

15

마침내 복원을 위해이 오류가 발생했습니다. 좌절감으로 SQL2012로 옮겼지만 2008R2에서도 여전히 작동 할 것 같습니다. 논리적 이름을 사용해야했습니다.

RESTORE FILELISTONLY
FROM DISK = location of your.bak file

그리고 거기에서 MOVE논리적 이름 을 사용하여 복원 문을 실행했습니다 .

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'

회복이 끝났을 때 나는 거의 기쁨으로 울었습니다.

행운을 빕니다!


4

이 문제의 두 가지 이유는 다음과 같습니다.

  1. SQL 2012에서 수행 된 백업 및 헤더 만 복원은 SQL 2008 R2에서 수행되었습니다.

  2. 백업 미디어가 손상되었습니다.

아래 명령을 실행하면 항상 실제 오류를 찾을 수 있습니다.

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

견적서에 데이터베이스 파일의 전체 위치를 제공하십시오.

도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.