MS SQL Server Enterprise Backup in andere Version einspielen

MS SQL Server Enterprise Backup in andere Version einspielen

Hallo zusammen,

diese Tage hatte ich mit einem Problemchen zu kämpfen, wo ich anfangs etwas irritiert war.
Wir haben auf einem Windows 2008 R2 Enterprise Server auch einen MS SQL Server 2008 R2 Enterprise laufen (u.a. für ein ERP-System).

In einer „Spiel-VM“ wollte ich mir dazu nun einen Clone erstellen, um damit einfach mal auch etwas abseits und ohne Risiko testen zu können. Dazu wollte ich das SQL-Server Backup (der Enterprise Edition) in eine MS SQL Server Express 2008 einspielen – denkste!

Beim Wiederherstellen der DB zeigte sich leider folgender Fehler:

MS-SQL-Exp-Restore-Enterprise-Backup-mit-Data-Komp

Aufgrund der eingesetzten „data compression“ in der Enterprise Variante lässt sich das Backup in keiner niedrigeren Version zurückspielen – dies ist ausschließlich eine Enterprise Funktion!

Folgendes muss man machen, damit das Backup dennoch in einer anderen Version restorbar ist:

[notice]Hinweis: Erstelle vorher ein Backup der SQL-DB (für alle Fälle) ![/notice]

1.) Analyse der Tabellen im SQL-Server (Enterprise Edition), welche betroffen sein:

SELECT
SCHEMA_NAME(sys.objects.schema_id) AS [SchemaName]
,OBJECT_NAME(sys.objects.object_id) AS [ObjectName]
,[rows]
,[data_compression_desc]
,[index_id] as [IndexID_on_Table]
FROM sys.partitions
INNER JOIN sys.objects
ON sys.partitions.object_id = sys.objects.object_id
WHERE data_compression > 0
AND SCHEMA_NAME(sys.objects.schema_id) <> 'SYS'
ORDER BY SchemaName, ObjectName

Als Ausgabe erhälst du sämtliche Tabellen, welche dieses Feature nutzen.

2.) Abschalten der Datenkomprimierung für die jeweilige Tabelle:


ALTER INDEX ALL ON dbo.<tabellenname1> REBUILD WITH (DATA_COMPRESSION = None);
ALTER INDEX ALL ON dbo.<tabellenname2> REBUILD WITH (DATA_COMPRESSION = None);
ALTER INDEX ALL ON dbo.<tabellenname3> REBUILD WITH (DATA_COMPRESSION = None);
...

Wenn du nun ein Backup erstellst, ist das Enterprise Feature nicht mehr enthalten und du kannst das Backup auch in eine SQl-Express Edition zurücksichern 😉

Viel Spass damit 😉