Ich habe gelesen, dass es aus Gründen der Abwärtskompatibilität möglich ist, eine Datenbank in SQL Server wiederherzustellen, solange Sie von einer älteren Version auf eine neuere Version wiederherstellen.
Weiß jemand sofort, ob Sie eine Datenbank aus einer * .bak-Datei für verschiedene Editionen von SQL Server wiederherstellen können? Wir verschieben eine sehr große Datenbank über FTP, was einige Tage dauern wird. Deshalb möchten wir dies lieber nur einmal tun. Wenn bis zu dem Zeitpunkt, an dem wir die Datenbank über FTP übertragen, niemand antwortet, werden wir dies natürlich ausprobieren und durch Testen prüfen, ob es funktioniert, und unsere eigene Frage beantworten.
Unten finden Sie eine Abfrage, um Versionsdetails von SQL Server abzurufen. Das productversion
ist im Format {major revision}.{minor revision}.{release revision}.{build number}
. In meinem Fall hat der {release revision}
Wert 5500
für die Quelle und 5512
für das Ziel. Das sieht also okay aus. Das edition
ist jedoch anders.
Abfrage:
SELECT
SERVERPROPERTY('productversion'),
SERVERPROPERTY('productlevel'),
SERVERPROPERTY('edition')
Quellendatenbank:
10.0.5500.0
SP3
Developer Edition (64-bit)
Zieldatenbank:
10.0.5512.0
SP3
Enterprise Edition (64-bit)
quelle
Antworten:
Vom Entwickler zum Unternehmen ist alles in Ordnung. Stellen Sie nur sicher, dass Sie bei Verwendung der Prozessorlizenzierung Lizenzen auf dem Zielserver haben, um alle CPUs abzudecken. Und es reicht nicht aus, sie nur vor SQL zu verbergen. Wenn sie physisch mit dem Computer verbunden sind, sind Sie für sie verantwortlich.
Auch wenn Sie von einem niedrigeren Build zu einem höheren Build wechseln, erhöht sich Ihre Datenbankversion. Es gibt einige Szenarien, in denen dies problematisch sein kann. Wenn Sie beispielsweise 15.000 Partitionsunterstützung für einen bestimmten Build von 2008 verwenden, funktioniert dies nicht, wenn Sie auf einen bestimmten Build von 2008 R2 aktualisieren. Möglicherweise verlassen Sie sich auch auf Optimierungen (und haben Problemumgehungen), die tatsächlich Fehler in einem älteren Build sind, aber im neuen Build behoben werden. Dies kann zu einer schlechteren Leistung führen. Es ist auch wichtig, alle an der Quelle verwendeten Trace-Flags zu überprüfen und festzustellen, ob sie auch am Ziel aktiviert werden sollen. Egal, Jobs, Logins usw.
Natürlich kann man nicht rückwärts gehen. Ich habe noch nie ein kleines Downgrade wie 10.0.5512 -> 10.0.5500 versucht, aber es ist definitiv nicht möglich, in Service Pack oder Version herunterzufahren. Wenn Sie also eine 2012-Datenbank auf Ihrer Developer Edition-Instanz haben und diese in der Produktion auf Ihre 2008-Instanz setzen möchten, ist Ihre Arbeit für Sie ausgeschnitten (siehe hier und hier ) - insbesondere, wenn Sie 2012-Funktionen verwendet haben .
Aber um andere Fälle abzudecken, die Menschen bei dieser Frage landen könnten (z. B. möchte jemand von Entwickler -> Standard oder Unternehmen -> Express oder was haben Sie) ...
Es gibt andere Edition -> Edition-Upgrades, die nicht so gut funktionieren, z. B. von Developer -> Express, wenn Sie Funktionen verwendet haben, die in Express nicht unterstützt werden (und dasselbe gilt für jede andere Edition als Enterprise). Einige Beispiele für Funktionen, die Sie für untergeordnete Editionen nicht verwenden können (in diesem Fall wird die Wiederherstellung an dem Punkt beendet, an dem versucht wird, die Datenbank online zu schalten):
Ich weiß nicht, ob es eine Möglichkeit gibt, dies direkt aus der .BAK-Datei zu erkennen (ich bin sicher, dass irgendwo Magie aus Seitenkopfzeilen extrahiert werden kann oder ob Sie ein Wochenende Zeit haben, um mit einem Hex-Editor zu brennen). Während die Datenbank auf der Quellinstanz noch intakt ist, können Sie jederzeit Folgendes tun, um festzustellen, ob Sie Funktionen verwenden, die aufgrund der SKU, in der Sie sich befinden, verfügbar sind:
Ich bin mir nicht sicher, ob SQL Server Audit auf dieser Liste stehen sollte - die Edition-Exklusivität dieser Funktion hat sich geändert, daher hängt es wahrscheinlich davon ab, was Sie damit tun. Es gibt andere Dinge, die Sie möglicherweise verwenden, die jedoch nicht in der DMV angezeigt werden (einige, weil sie in Ihrem Code enthalten sind, den die DMV nicht analysiert, und andere, weil Ihre Datenbank auf externen Dingen wie dem SQL Server-Agenten basiert , Service Broker usw.):
Es gibt auch Fälle, in denen Sie aufgrund von Einschränkungen der Dateigröße nicht von Developer zu Express wechseln können (Express-Datenbanken sind auf insgesamt 10 GB Datendateigröße begrenzt).
Natürlich kann es andere Fallstricke geben, vor denen Sie nicht gewarnt werden - sie verhindern die Migration nicht, aber sie können zu einer sehr unterschiedlichen Leistung des Ziels führen. Beispiele:
NOEXPAND
. Und Sie sind sich vielleicht gar nicht bewusst, dass Ihre Abfragen aufgrund dieser Funktion plötzlich langsamer werden.UPDATE basierend auf diesem Duplikat :
Es kann Fälle geben, in denen Sie versuchen, eine Datenbank von einer bestimmten Edition auf eine niedrigere Edition (auch auf derselben Version) wiederherzustellen, und Sie erhalten Fehler, die weniger hilfreich sind :
Das ist nicht sehr intuitiv. Wenn Sie sich jedoch die Ereignisprotokolle von SQL Server genauer ansehen, werden weitere nützliche Fehler angezeigt (nur ein Beispiel):
Das stimmt nicht ganz - Sie können auch die Evaluation Edition oder Developer Edition wiederherstellen, aber das ist nebensächlich. Um diese Datenbank wiederherzustellen, haben Sie grundsätzlich zwei Möglichkeiten:
Eine Variation von (2) wäre, einfach die Partitionierung und andere Funktionen in der Quellendatenbank zu entfernen und eine weitere Sicherung durchzuführen. Aber wenn es nicht kaputt ist ...
quelle
Entwickler und Unternehmen sind dieselbe Software, nur mit unterschiedlichen Lizenzvereinbarungen.
Sie sollten diese Datenbank an Ihrem Zielort problemlos wiederherstellen können.
quelle