none
Restaurar backup do SQL 2008 enterprise para SQL server 2012 standard RRS feed

  • Pergunta

  • Comprei a versão SQL 2012 standard para implantação do sistema ERP da empresa  ao restaurar a base de dados do antigo servidor (utiliza o SQL server enterprise 2008 ) ocorreu falha apresentando a informação:

    Não é possivel iniciar o banco de dados nesta edição do SQL pois existem objetos ou parte deles com compactação de dados ativada ou formato de armazenamento vardecimal. Estes métodos só tem suporte nas versões SQL Server enterprise edition.

    A minha dúvida é se existe uma forma de gerar um backup da base (no SQL Server 2008 enterprise) que seja compatível com a versão standard e não apresente essa mensagem de falha.

    quarta-feira, 13 de março de 2013 19:28

Respostas

  • Tiago,

    Voce esta utlizando compressão de dados (Ou linha ou paginas) que esta disponivel apenas nas versões enterprise, voce deve identificar quais tabelas estão com a compressão ativa e então desativalas, só depois fazer um backup/restore.

    Este link pode te ajudar: http://msdn.microsoft.com/pt-br/library/hh710073.aspx

    E este script como orientação:

    --Criação da tabela
    CREATE TABLE Teste (Nome VARCHAR(800)) WITH (DATA_COMPRESSION = PAGE)

    --Identificação das tabelas a serem tratadas
    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

    --Desativação
    ALTER TABLE Teste
    REBUILD WITH (DATA_COMPRESSION = NONE)


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    quarta-feira, 13 de março de 2013 19:43
    Moderador
  • Tiago,

    Crie um script dinamico!

    Exemplo:

    SELECT 
    'ALTER TABLE ' + OBJECT_NAME(sys.objects.object_id)  + 'REBUILD WITH (DATA_COMPRESSION = NONE)' As Script
    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' 


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    quinta-feira, 14 de março de 2013 12:26
    Moderador

Todas as Respostas

  • Tiago,

    Voce esta utlizando compressão de dados (Ou linha ou paginas) que esta disponivel apenas nas versões enterprise, voce deve identificar quais tabelas estão com a compressão ativa e então desativalas, só depois fazer um backup/restore.

    Este link pode te ajudar: http://msdn.microsoft.com/pt-br/library/hh710073.aspx

    E este script como orientação:

    --Criação da tabela
    CREATE TABLE Teste (Nome VARCHAR(800)) WITH (DATA_COMPRESSION = PAGE)

    --Identificação das tabelas a serem tratadas
    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

    --Desativação
    ALTER TABLE Teste
    REBUILD WITH (DATA_COMPRESSION = NONE)


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    quarta-feira, 13 de março de 2013 19:43
    Moderador
  • Bom dia Fabrizzio!

    Primeiramente agradeço pela resposta inicial.

    O problema é que temos mais de 26.000 tabelas para desativação. Tens algum comando para fazer a descompactação de um grupo de tabelas?

    Ps Elas estão com data compression = PAGE

    quinta-feira, 14 de março de 2013 12:24
  • Tiago,

    Crie um script dinamico!

    Exemplo:

    SELECT 
    'ALTER TABLE ' + OBJECT_NAME(sys.objects.object_id)  + 'REBUILD WITH (DATA_COMPRESSION = NONE)' As Script
    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' 


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    quinta-feira, 14 de março de 2013 12:26
    Moderador
  • Tiago,

    Tente este exemplo:

    Exec sp_MSforeachtable 'Alter Table ? REBUILD WITH (DATA_COMPRESSION = NONE)'


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    segunda-feira, 18 de março de 2013 17:24
    Moderador