0

TFS 2013 – Retirar compressão do SQL Enterprise para migrar bases para o SQL Standard

Olá amigos tudo bem?

Em um determinado cliente durante esses tempos me deparei com um “probleminha” ao migrar uma base de dados de um TFS 2010 que estava rodando num SQL 2008 Developer Edition para um SQL 2012 Standard.

Após realizar todo os procedimentos iniciais para a migração para o TFS 2013, o cliente começou restaurar as bases de dados no dentro do SQL 2012 Standard, porém após iniciar o processo ,com  suspeita que não daria certo , deu um erro (rs) , muito sinistro, segundo o mesmo, conforme abaixo:

 

Compression-Error

Compression Error

 

Encontrei algumas referências na internet e encontrei um post no blog do Martin Hinshelwood me ajudou bastante. O que ele explicava é que nas versões do SQL Developer Edition e Enterprise tinha uma compressão em algumas tabelas , que não existiam no SQL Standard, dessa forma havia essa incompatibilidade na hora de restaurar o backup. Então temos que executar a query abaixo, em cada base de dados que será restaurada no novo SQL Standard:

 

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

Após executar essa query deverá retornar algumas linhas com nome de algumas tabelas que possuem a compressão, conforme o exemplo abaixo:

table compression

table compression

 

Com esses resultados então devemos utilizar a seguinte query com o nome de cada tabela para retirar as compressões, conforme o exemplo abaixo:

ALTER INDEX ALL ON tbl_PropertyValue REBUILD WITH (DATA_COMPRESSION = None);
ALTER INDEX ALL ON tbl_PropertyValue REBUILD WITH (DATA_COMPRESSION = None);
ALTER INDEX ALL ON tbl_RegistryItems REBUILD WITH (DATA_COMPRESSION = None);
ALTER INDEX ALL ON tbl_SecurityAccessControlEntry REBUILD WITH (DATA_COMPRESSION = None);

GO

Com isso conseguimos retirar a compressão originada do SQL Developer e Enterprise Edition, conseguindo com sucesso restaurar no SQL Standard.

Link útil:

http://support.microsoft.com/kb/2712111 

 

[]s, \\//_

 

Até a Proxima!

Rogério Rodrigues

Desenvolvedor .net , MSP - Microsoft Student Partner , Xamarin Student Ambassador.