Ältere Versionen von SQL Server-Datenbanken mit 2012 verwenden?

7

Wir wurden gebeten, von SQL Server 2008 R2 auf 2012 umzusteigen. Die Installation wurde vor einigen Stunden abgeschlossen. Seitdem habe ich versucht, Datenbanken von 2008 bis 2012 anzuhängen.

Es scheint keine Wirkung zu haben. Fehlermeldungen unten:

Das Anhängen der Datenbank ist für den Server 'Development \ SQLSERVER' fehlgeschlagen. (Microsoft.SqlServer.Smo) Die
Datenbank 'PS_EmpData' kann nicht aktualisiert werden, da ihre Nicht-Release-Version (539) von dieser Version von SQL Server nicht unterstützt wird. Sie können keine Datenbank öffnen, die mit dieser Version von sqlservr.exe nicht kompatibel ist. Sie müssen die Datenbank neu erstellen.

Ich meine, diese Tabelle ist eine ziemlich große Datenbank; und die Zeit, die benötigt würde, um alle Einsätze neu zu erstellen, wäre unwirklich. Wir arbeiten noch mit unserem SQL 2008 R2 für die Produktion, aber der Entwicklungsprozess läuft 2012.

Meine allgemeine Frage lautet: Müssen wir die Datenbank neu erstellen, um 2012 verwenden zu können, oder gibt es eine Problemumgehung?

user1968541
quelle

Antworten:

7

Die in der Fehlermeldung angegebene Version (539) besagt, dass diese Datenbank eine SQL Server 2000-Datenbank ist und daher in SQL Server 2012 nicht unterstützt wird. Siehe hier

Wahrscheinlich ist in Ihrem SqlServer 2008R2 für diese bestimmte Datenbank eine Kompatibilitätsstufe auf SQL Server 2000 festgelegt. Sie können versuchen, diese Stufe zu ändern, indem Sie zu den Eigenschaften der Datenbank auf der Seite Optionen wechseln und die Kompatibilitätsstufe auf 2008 ändern. Versuchen Sie dann erneut, die Datenbank anzuhängen SQL Server 2012

Steve
quelle
3
Ich habe auch hier darüber gebloggt
Aaron Bertrand
3

Die Dinge passen nicht zusammen. Entweder stammt die Datenbank aus SQL 2008, und dann ist es Version 655 (oder 661, wenn es sich um SQL Server 2008 R2 handelt), oder die Datenbank ist Version 539, bei der es sich im Grunde um eine antidiluvianische Version handelt. Ich würde viel lieber glauben, dass das Feld für die Datenbankversion in der Datei tatsächlich beschädigt ist (z. B. wurde es in der Dateikopie geändert). Stellen Sie sicher, dass die Datei mit der Quelldatei Ihrer SQL 2008-Instanz identisch ist.

Remus Rusanu
quelle
Ich stimme irgendwie zu. Wenn die 2000-Datenbank an die 2008/2008 R2-Instanz angehängt / wiederhergestellt wurde, sollte ihre Version nicht mehr 539 sein (auch wenn sie sich noch im 80/2000-Kompatibilitätsmodus befindet). Ich frage mich, ob die Quellensicherung oder MDF-Datei aus dem Jahr 2000, die zum Erstellen der Datenbank in 2008/2008 R2 verwendet wurde, auch zum Erstellen der Datenbank im Jahr 2012 verwendet wurde (im Gegensatz zu einer Sicherung oder einer getrennten Kopie der MDF-Datei aus dem Jahr 2008 /). 2008 R2). Es ist auch merkwürdig, dass es sich um eine Anhängeoperation im Gegensatz zu einer Wiederherstellungsoperation handelt ...
Aaron Bertrand
3

Die interne Datenbankversion 539 stammt aus SQL 2000. 2012 wird wahrscheinlich nicht direkt von dieser Version unterstützt. Da Sie jedoch einen 2008 R2-Server haben, haben Sie wahrscheinlich einige Optionen, um diese Datenbank zuerst auf diesem Server zu aktualisieren.

Wenn auf dem 2008 R2-Server genügend Speicherplatz für eine weitere Kopie der Datenbank vorhanden ist, holen Sie sich dort eine, versuchen Sie, die Kompatibilitätsstufe auf 100 (2008 R2) festzulegen, trennen Sie sie und fügen Sie sie erneut hinzu. Das Upgrade der internen Datenbankversion erfolgt in der Regel während des Anhängens (oder einer Wiederherstellung).

Ich habe zufällig 2000 / 2008R2 / 2012 bereitgestellt, daher werde ich einen kurzen Test durchführen und sicherstellen, dass die oben genannten Funktionen funktionieren.

Bearbeiten: Durch Erstellen eines Backups von meinem 2000-Server und Wiederherstellen auf dem 2008 R2-Server wurde die interne Datenbankversion automatisch auf 661 (2008 R2) aktualisiert, obwohl die Kompatibilitätsstufe auf 80 (SQL 2000) festgelegt ist. Ich bin mir nicht sicher, wie Sie auf 2008 R2 zu einer v539-Datenbank gekommen sind, aber versuchen Sie, eine Kopie davon anzuhängen / zu entfernen, nachdem Sie die Kompatibilitätsstufe geändert haben, und überprüfen Sie die interne Version mit (aus dem Blog-Beitrag von Jonathan Kehayias hier ):

DBCC TRACEON (3604);  
GO 
DBCC PAGE (ExampleDB, 1, 9, 3); 
GO 
DBCC TRACEOFF (3604);

Irgendwo in der Ausgabe sollte ein Indikator für die interne Versionsnummer sein:

dbi_version = 655 
Kevin
quelle