Eu tenho uma cópia local de um banco de dados do SQL Server armazenada como um arquivo MDF. Existe uma maneira de saber qual versão do SQL Server foi usada para criar esse arquivo?
Eu tenho uma cópia local de um banco de dados do SQL Server armazenada como um arquivo MDF. Existe uma maneira de saber qual versão do SQL Server foi usada para criar esse arquivo?
Respostas:
Você pode determinar a versão do arquivo MDF primário de um banco de dados observando os dois bytes no deslocamento 0x12064. Consulte Como determinar a versão do banco de dados de um arquivo MDF .
Nos .bak
arquivos, o byte mais baixo é 0xEAC e o mais alto é 0xEAD.
Você pode encontrar a maioria dos números de versão de banco de dados internos para MS SQL aqui .
Use RESTORE HEADERONLY, por exemplo
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
Você terá muitas colunas, mas as de interesse são SoftwareVersionMajor, SoftwareVersionMinor e SoftwareVersionBuild, que devem fornecer o número da versão do SQL Server. No nosso sistema, por exemplo, são 10, 0 e 4000, o que significa 10.0.4000 (2008 SP2).
Entretanto, não se sabe o que acontece se você tentar fazer isso com um backup muito antigo para ser restaurado na versão em que o servidor está executando - você pode receber apenas um erro e nenhuma informação (embora isso por si só forneça pelo menos algumas dicas sobre a versão é de).
Para arquivos MDF, tente este comando:
dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)
Será saída 3 propriedades, com valores: Database name
, Database version
e Collation
.
A sintaxe está a seguir (o comando não está documentado, portanto, mais informações aqui ):
DBCC CHECKPRIMARYFILE ({'FileName'} [, opt = {0 | 1 | 2 | 3}])
FileName nada mais é do que o caminho real do arquivo .mdf do arquivo de dados primário do banco de dados do SQL Server.
Opt = 0 - verifica se o arquivo é um arquivo de Dados Principais do Banco de Dados do SQL Server (.mdf).
Opt = 1 - Retorna o nome, tamanho, tamanho máximo, crescimento, status e caminho do banco de dados de todos os arquivos associados ao banco de dados.
Opt = 2 - Retorna informações sobre o nome do banco de dados, versão e agrupamento.
Opt = 3 - Retorna o nome, status e caminho de todos os arquivos associados ao banco de dados.
Boa pergunta! Acredito que não, além do processo de tentativa e erro de, digamos, tentar restaurar um arquivo de backup do SQL Server 2008 R2 no SQL Server 2005. Obviamente, isso não funcionará. Não me lembro de imediato se usar o Management Studio - e clicar no botão de conteúdo para uma restauração - mostrará algo interessante.
Eu ainda não os experimentei, mas é possível que uma ferramenta de terceiros, como o Virtual Restore do Red Gate, lhe informe - ele permite que você olhe o banco de dados "dentro" do arquivo de backup. http://www.red-gate.com/products/dba/sql-virtual-restore/
Você pode encontrar isso usando as informações na página de inicialização do banco de dados. Eu escrevi sobre isso em http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/
A melhor maneira que eu já vi de fazer isso foi colhida nesta postagem nos fóruns do SQL Server MSDN.
Basicamente, envolve entrar no arquivo e examinar a página de inicialização do arquivo mdf.