SQL Server 데이터베이스 복원 오류: 지정한 캐스트가 잘못되었습니다. (SqlManager)UI)
운영 웹 사이트에는 SQL Server 2008 R2 Standard(버전 10.50.1600.1)를 사용하고 로컬 호스트에는 SQL Server Express Edition(v10.50.1600.1)을 데이터베이스로 사용하고 있습니다.
며칠 전 SQL 서버가 다운되어 로컬 호스트에 새 2008 R2 Express 버전을 설치해야 했습니다.Express Edition에서 가져온 일부 이전 버전을 복원할 때는 정상적으로 작동했지만 데이터베이스를 복원하려고 할 때는.bak운영 서버에서 가져온 파일로 인해 다음 오류가 발생했습니다.
오류: 지정한 캐스트가 잘못되었습니다. (SqlManager)UI)
명령을 사용하여 데이터베이스를 복원하려고 할 때
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, 레벨 16, 상태 4, 라인 1
백업 세트에는 기존 '등록' 데이터베이스가 아닌 데이터베이스의 백업이 들어 있습니다.
Msg 3013, 레벨 16, 상태 1, 라인 1
RESTORE 데이터베이스가 비정상적으로 종료되고 있습니다.
버전을 교차 확인했습니다.아래 이미지와 같이 모두 일치하는 것 같습니다.
이전에는 표준 버전에서 익스프레스 에디션으로 데이터베이스를 복원할 수 있었지만 지금은 실패합니다.데이터베이스를 삭제하고 다시 작성하려고 했습니다.그것도 실패야.
저는 제가 무엇을 잘못하고 있는지 잘 모르겠습니다.관련하여 도움을 주시면 감사하겠습니다.
.bak 파일이 손상되어 문제가 해결되었습니다.다른 파일로 시도해보니 효과가 있었습니다.
SQL Server 2012 버전 백업 파일을 SQL Server 2008 R2 이하로 복원하기 때문일 수 있습니다.
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.
복원 중에 이 오류가 사라졌습니다.저는 좌절감을 느껴 SQL 2012로 옮겼지만, 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'
복구가 끝났을 때, 저는 기쁨으로 눈물을 흘릴 뻔했습니다.
행운을 빕니다.
이 문제에 대한 두 가지 이유는 다음과 같습니다.
SQL 2012 및 Restore Header에 대한 백업은 SQL 2008 R2에서만 수행되었습니다.
백업 미디어가 손상되었습니다.
아래 명령을 실행하면 실제 오류를 항상 찾을 수 있습니다.
restore headeronly
from disk = 'C:\Users\Public\Database.bak'
견적서에서 데이터베이스 파일의 전체 위치를 지정합니다.
도움이 되길 바랍니다.
언급URL : https://stackoverflow.com/questions/13604720/sql-server-database-restore-error-specified-cast-is-not-valid-sqlmanagerui
'programing' 카테고리의 다른 글
| Spnet 코어에서 Excel로 내보내기 (0) | 2023.06.03 |
|---|---|
| iPhone Core 데이터를 웹 서버와 동기화한 다음 다른 장치로 푸시하는 방법은 무엇입니까? (0) | 2023.06.03 |
| Internet Explorer 엔진을 사용할 수 없기 때문에 응답 내용을 구문 분석할 수 없습니다. (0) | 2023.05.29 |
| 명령줄의 프로세서/코어 수 (0) | 2023.05.29 |
| PostgreSQL - 데이터베이스 이름 변경 (0) | 2023.05.29 |