MDF 또는 BAK 파일을 만드는 데 사용 된 SQL Server 버전을 확인하는 방법이 있습니까?


19

MDF 파일로 저장된 SQL Server DB의 로컬 복사본이 있습니다. 해당 파일을 만드는 데 사용 된 SQL Server의 버전을 알려주는 방법이 있습니까?

답변:


8

오프셋 0x12064의 2 바이트를 보면 데이터베이스의 기본 MDF 파일 버전을 확인할 수 있습니다. MDF 파일의 데이터베이스 버전을 확인하는 방법을 참조하십시오 .

에서 .bak파일을 하위 바이트는 0xEAC하고 높은 0xEAD입니다.

MS SQL에 대한 대부분의 내부 데이터베이스 버전 번호는 여기에서 찾을 수 있습니다 .


1
노트! 이것은 x64 버전의 MS SQL에서 다른 것 같습니다. 모든 경우에 SFMB, SSET, VOLB, MSCI의 4 개 블록이 있습니다. 버전이 MSCI 블록에 있습니다. 문제는 블록 크기가 일정하지 않다는 것입니다. 다행히 블록 크기를 512 (0x200)로 나눌 수있는 것 같습니다. 512 바이트마다 찾아 "MSCI"를 찾으십시오. 그런 다음 하위 바이트의 경우 172 바이트 (0xAC)로 이동하고 상위 바이트의 경우 다음 바이트로 이동하십시오.
Nux

22

예를 들어 RESTORE HEADERONLY를 사용하십시오.

RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'

많은 열을 얻을 수 있지만 관심있는 열은 SoftwareVersionMajor, SoftwareVersionMinor 및 SoftwareVersionBuild이며 SQL Server의 버전 번호를 제공해야합니다. 예를 들어 시스템에서 10, 0 및 4000은 10.0.4000 (2008 SP2)을 의미합니다.

그러나 서버가 실행중인 버전에서 복원하기에 너무 오래된 백업으로이 작업을 수행하면 어떻게되는지 확실하지 않습니다. 오류가 발생하고 정보가 표시되지 않을 수 있습니다. 원래 버전).


1
이 작업을 시도했지만 백업 장치를 설정하지 않았습니다 :-(. 제안 해 주셔서 감사합니다!
Ben McCormack

1
예를 들어 SQL 2008에서 SQL 2012 백업을 테스트 할 때는이 쿼리에서 유용한 결과를 얻을 수 없습니다.
Nux

6

MDF 파일의 경우 다음 명령을 시도하십시오.

dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)

Database name, Database version및 값이 포함 된 3 개의 속성이 출력됩니다 Collation.

구문은 다음과 같습니다 (명령은 문서화되어 있지 않으므로 자세한 정보는 here ).

DBCC CHECKPRIMARYFILE ({ 'FileName'} [, opt = {0 | 1 | 2 | 3}])

FileName은 SQL Server 데이터베이스 기본 데이터 파일 .mdf 파일의 실제 경로 일뿐입니다.

Opt = 0-파일이 SQL Server 데이터베이스 기본 데이터 파일 (.mdf)인지 확인합니다.

Opt = 1-데이터베이스와 연관된 모든 파일의 데이터베이스 이름, 크기, 최대 크기, 증가, 상태 및 경로를 반환합니다.

Opt = 2-데이터베이스 이름, 버전 및 데이터 정렬 정보를 반환합니다.

Opt = 3-데이터베이스와 관련된 모든 파일의 이름, 상태 및 경로를 반환합니다.


1
답을 이해하기 쉽게 설명을 추가 할 수 있습니다.
Drew Khoury

0

좋은 질문! SQL Server 2008 R2 백업 파일을 SQL Server 2005로 복원하려고 시도하는 시행 착오 과정을 제외하고는 그렇게 생각하지 않습니다. 분명히 작동하지 않습니다. Management Studio를 사용하고 복원을 위해 내용 버튼을 클릭하면 흥미로운 것을 보여줄지 여부를 기억할 수 없습니다.

나는 그것들을 시도하지는 않았지만 Red Gate의 Virtual Restore와 같은 타사 도구가 당신에게 말할 것입니다-그것은 백업 파일을 "내부"에서 데이터베이스를 볼 수있게합니다. http://www.red-gate.com/products/dba/sql-virtual-restore/



0

내가 본 가장 좋은 방법 은 SQL Server MSDN 포럼 의이 게시물 에서 얻은 것 입니다.

기본적으로 파일에 들어가서 mdf 파일의 부팅 페이지를 검사합니다.

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