web-dev-qa-db-ja.com

MDFまたはBAKファイルの作成に使用されたSQL Serverのバージョンを確認する方法はありますか?

MDFファイルとして保存されているSQL Server DBのローカルコピーがあります。そのファイルの作成に使用されたSQL Serverのバージョンを確認する方法はありますか?

19
Ben McCormack

データベースのプライマリMDFファイルのバージョンは、オフセット0x12064にある2バイトを調べることで判別できます。 データベースのバージョンを判別する方法を参照してください。 MDF file

.bakファイルの下位バイトは0xEAC、上位ファイルは0xEADです。

MS SQLのほとんどの内部データベースバージョン番号は こちら にあります。

8
Remus Rusanu

RESTORE HEADERONLYを使用します。

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

多くの列が表示されますが、対象となるのは、SoftwareVersionMajor、SoftwareVersionMinor、およびSoftwareVersionBuildです。これにより、SQL Serverのバージョン番号がわかります。たとえば、私たちのシステムでは、これらは10、0、4000で、10.0.4000(2008 SP2)を意味します。

サーバーが実行しているバージョンで復元するには古すぎるバックアップを使用してこれを行おうとするとどうなるかわかりませんが、エラーが発生して情報が表示されない場合があります(ただし、それ自体で少なくともいくつかの手掛かりが得られます)元のバージョン)。

22
db2

MDFファイルの場合、次のコマンドを試してください:

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

次の値を持つ3つのプロパティが出力されます:Database nameDatabase versionおよび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-データベースに関連付けられているすべてのファイルの名前、ステータス、およびパスを返します。

6
Kanji Patel

良い質問! SQL Server 2008 R2バックアップファイルをSQL Server 2005に復元しようとする試行錯誤のプロセスは別として、私はそうは思わない。明らかに、それはうまくいきません。 Management Studioを使用して-復元のコンテンツボタンをクリックして-興味深いものを表示するかどうか、私はすぐに思い出せません。

私はそれらを試していませんが、Red Gateの仮想復元などのサードパーティツールが通知する可能性があります。これにより、バックアップファイルの「内部」のデータベースを確認できます。 http://www.red-gate.com/products/dba/sql-virtual-restore/

0
Peter Schofield

これは、データベースのブートページの情報を使用して見つけることができます。これについて http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/ に書いた

0
Sankar Reddy

これを実行するために私が今まで見た中で最良の方法は、SQL Server MSDNフォーラムの this post から収集されました。

基本的には、ファイルにアクセスして、mdfファイルのブートページを調べる必要があります。

0
squillman