Ich habe eine lokale Kopie einer SQL Server-Datenbank als MDF-Datei gespeichert. Gibt es eine Möglichkeit, festzustellen, welche Version von SQL Server zum Erstellen dieser Datei verwendet wurde?
Ich habe eine lokale Kopie einer SQL Server-Datenbank als MDF-Datei gespeichert. Gibt es eine Möglichkeit, festzustellen, welche Version von SQL Server zum Erstellen dieser Datei verwendet wurde?
Antworten:
Sie können die Version der primären MDF-Datei einer Datenbank ermitteln, indem Sie die beiden Bytes bei Offset 0x12064 betrachten. Siehe So ermitteln Sie die Datenbankversion einer MDF-Datei .
In .bak
Dateien ist das niedrigere Byte 0xEAC und das höhere 0xEAD.
Die meisten internen Datenbankversionsnummern für MS SQL finden Sie hier .
Verwenden Sie RESTORE HEADERONLY, z
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
Sie werden viele Spalten erhalten, aber die interessantesten sind SoftwareVersionMajor, SoftwareVersionMinor und SoftwareVersionBuild, die Ihnen die Versionsnummer von SQL Server geben sollten. Auf unserem System sind dies beispielsweise 10, 0 und 4000, was 10.0.4000 (2008 SP2) bedeutet.
Sie sind sich nicht sicher, was passiert, wenn Sie versuchen, dies mit einer Sicherung zu tun, die zu alt ist, um in der auf dem Server ausgeführten Version wiederhergestellt zu werden. Möglicherweise erhalten Sie nur eine Fehlermeldung und keine Informationen (obwohl dies an sich zumindest einige Hinweise liefern würde) die version ist von).
Versuchen Sie für MDF-Dateien diesen Befehl:
dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)
Es werden 3 Eigenschaften mit den Werten Database name
, Database version
und ausgegeben Collation
.
Die Syntax ist folgende (der Befehl nicht dokumentiert ist daher mehr Informationen hier ):
DBCC CHECKPRIMARYFILE ({'FileName'} [, opt = {0 | 1 | 2 | 3}])
Dateiname ist nichts anderes als der tatsächliche Pfad der .mdf-Datei der SQL Server-Datenbankprimärdatendatei.
Opt = 0 - Überprüft, ob es sich bei der Datei um eine SQL Server-Datenbank-Primärdatendatei (.mdf) handelt.
Opt = 1 - Gibt den Datenbanknamen, die Größe, die maximale Größe, das Wachstum, den Status und den Pfad aller der Datenbank zugeordneten Dateien zurück.
Opt = 2 - Gibt den Datenbanknamen, die Version und die Sortierungsinformationen zurück.
Opt = 3 - Gibt Name, Status und Pfad aller der Datenbank zugeordneten Dateien zurück.
Gute Frage! Abgesehen von dem Versuch, eine SQL Server 2008 R2-Sicherungsdatei auf SQL Server 2005 wiederherzustellen, glaube ich das nicht. Offensichtlich funktioniert das nicht. Ich kann mich nicht ohne weiteres erinnern, ob die Verwendung von Management Studio - und das Klicken auf die Inhaltsschaltfläche für eine Wiederherstellung - Ihnen etwas Interessantes anzeigt.
Ich habe sie noch nicht ausprobiert, aber es ist möglich, dass ein Drittanbieter-Tool wie Virtual Restore von Red Gate es Ihnen mitteilt - es ermöglicht Ihnen, die Datenbank "in" der Sicherungsdatei zu betrachten. http://www.red-gate.com/products/dba/sql-virtual-restore/
Sie finden dies anhand der Informationen auf der Boot-Seite der Datenbank. Ich schrieb darüber bei http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/
Der beste Weg, den ich je gesehen habe, um dies zu tun, wurde aus diesem Beitrag in den SQL Server MSDN-Foren entnommen .
Im Grunde geht es darum, in die Datei zu gelangen und die Boot-Seite der MDF-Datei zu untersuchen.