프로덕션 웹사이트에는 SQL Server 2008 R2 Standard(버전 10.50.1600.1)를 사용하고 있으며, 로컬 호스트에는 로컬 호스트용 데이터베이스에는 고급 서비스가 포함된 SQL Server Express 에디션(v10.50.1600.1)을 사용하고 있습니다.
며칠 전 SQL Server가 다운되어 로컬 호스트에 새로운 2008 R2 Express 버전을 설치해야 했습니다. Express 에디션에서 가져온 일부 이전 버전을 복원 할 때는 정상적으로 작동했지만 프로덕션 서버에서 가져온 '.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'
다른 오류가 발생합니다.
메시지 3154, 레벨 16, 상태 4, 줄 1
백업 세트에 기존 '출판물' 데이터베이스가 아닌 다른 데이터베이스의 백업이 있습니다.
메시지 3013, 레벨 16, 상태 1, 줄 1
데이터베이스 복원이 비정상적으로 종료되고 있습니다. *.
버전을 교차 확인했습니다. 아래 이미지와 같이 모두 일치하는 것 같습니다.
이전에는 표준 버전에서 익스프레스 에디션으로 데이터베이스를 복원할 수 있었지만 지금은 실패합니다. 데이터베이스를 삭제하고 다시 만들려고 했습니다. 그것도 실패합니다.
내가 무엇을 잘못하고 있는지 잘 모르겠습니다. 다음과 관련하여 도움을 주시면 감사하겠습니다.
.bak 파일이 손상된 것 같아서 문제가 해결되었습니다. 다른 파일로 시도했을 때는 작동했습니다.
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.
마침내 복원 시 이 오류가 사라졌습니다. 답답한 마음에 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'
복원이 완료되었을 때 저는 기쁨에 눈물을 흘릴 뻔했습니다.
행운을 빕니다!
이 문제와 관련하여 아래와 같이 2 가지 수 있습니다.
Sql server 2012년 R2 는 SQL 2008년 에서 백업 및 복구 작업을 수행한 헤더프리
백업 미디어는 손상됨.
만약 우리가 명령 아래 실행하십시오 실제 오류 항상 확인할 수 있습니다.
restore headeronly
from disk = 'C:\Users\Public\Database.bak'
고객 데이터베이스 파일의 위치를 완료하십시오 크로트 열거하십시오
이를 통해 희망을