SQL Server Sürümleri Arasında Backup Taşıma (SQL SERVER ERROR 909)

Sql Server Error Code 909

Bildiğiniz üzere sql server sürümleri arasında büyük farklılıklar var. Gerek data yapısı üzerine gerekse performans üzerine olan bu farklılılar dolayısıyla bir sürümden diğerine geçiş yapmak gerektiğinde problemler yaşayabiliyoruz.

Bu bağlamda SQL Server Enterprise Edition üzerinde bulunan Data Compression ve varDecimalStorage format Compression özelliklerinin diğer sürümler üzerinde olmaması durumunda 909 hatası alırsınız.

Öncelikle yapmanız gereken ilgili veritabanınız da aşağıdaki kodu çalıştırarak hangi tabloların compression özelliklerinin bulunup bulunmadığını görmelisiniz.

SELECT s.[name]+’.’+o.[name] AS [object], i.[type_desc] COLLATE database_default+ISNULL(‘ ‘+i.[name], ‘’) AS index_name,
 (CASE WHEN COUNT(DISTINCT p.partition_number)>1 THEN ‘Is partitioned’ ELSE ‘’ END) AS [partitioned?],
 ISNULL(MIN(NULLIF(p.data_compression_desc, ‘NONE’))+’ compression’, ‘’) AS [compressed?],
 (CASE WHEN ISNULL(OBJECTPROPERTY(p.[object_id], ‘TableHasVarDecimalStorageFormat’), 0)=0 THEN ‘’ ELSE ‘vardecimal’ END) AS [vardecimal?]
FROM sys.partitions AS p
INNER JOIN sys.indexes AS i ON p.[object_id]=i.[object_id] AND p.index_id=i.index_id
INNER JOIN sys.objects AS o ON i.[object_id]=o.[object_id]
INNER JOIN sys.schemas AS s ON o.[schema_id]=s.[schema_id]
GROUP BY p.[object_id], s.[name], o.[name], i.index_id, i.[type_desc], i.[name]
ORDER BY s.[name], o.[name], i.index_id

Ardından ilgili tablonun index yapısını data sıkıştırması kullanılmadan tekrar inşa etmeniz gerekiyor.

ALTER INDEX ALL ON <TABLO_ADI> REBUILD WITH (DATA_COMPRESSION = NONE)

Bu işlemlerin ardından artık sürümler arası veritabanlarınızı kolaylıkla taşıabilirsiniz.