none
Cannot create a row of size 8096 which is greater than the allowable maximum of 8060 RRS feed

  • Pergunta

  • Pessoal, tenho a seguinte tabela:

    

    Este insert da o erro do Título:

    insert tab_parametro_sistema
    (TAB_PARAMETRO_SISTEMA_ID,
    desc_parametro_sistema,
    parametro,
    FUNCAO_ID,
    msg_parametro,
    default_parametro,
    desc_parametro,
    desc_parametro_adic)
    select 2630, 'SP Calculo icms Rodo', 'SP_040_CALC_ICMS_RODOV_NOVO127', NULL, 'SP', null, 'Define o nome da SP de calculo icms ecargoASP', null

    Não consigo entender o porque esta excedendo o limite de linha.... Podem me ajudar?

    Clayton Dias

    quinta-feira, 19 de abril de 2012 15:43

Todas as Respostas

  • Boa tarde Clayton,

    Tentei simular o erro aqui nomeu ambiente mais não consegui, inseriru o registro com sucesso, pessoalmente nunca vi este erro.

    Mas tente utilizar o Hint ROBUST SCAN para verificar se ocorre "algo de diferente".

    insert tab_parametro_sistema
    	   (TAB_PARAMETRO_SISTEMA_ID,
    		desc_parametro_sistema,
    		parametro,
    		FUNCAO_ID,
    		msg_parametro,
    		default_parametro,
    		desc_parametro,
    		desc_parametro_adic)
     select 2630, 
            'SP Calculo icms Rodo', 
            'SP_040_CALC_ICMS_RODOV_NOVO127', 
            NULL, 
            'SP', 
            null, 
            'Define o nome da SP de calculo icms ecargoASP', 
            null OPTION(ROBUST PLAN) 

    Adriano
    quinta-feira, 19 de abril de 2012 17:04
  • Boa tarde Adriano,

    O resultado é o mesmo.

    Clayton Dias

    quinta-feira, 19 de abril de 2012 17:16
  • Clayton,

    Qual a versão do seu Sql Server?

    Adriano

    quinta-feira, 19 de abril de 2012 17:18
  • Tente isto:
    EXEC sp_tableoption 'TABELA', 'large value types out of row', 1;
    Fonte:

    http://msdn.microsoft.com/pt-br/library/ms173530.aspx


    quinta-feira, 19 de abril de 2012 17:32
  • Clayton,

    Seu SQL é 2000?


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 19 de abril de 2012 17:43
    Moderador
  • Marcelo,

    Microsoft SQL Server 2005 - 9.00.1399.06 (X64)   Oct 14 2005 00:35:21   Copyright (c) 1988-2005 Microsoft Corporation  Standard Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2) 

    O modo de compatibilidade é 80!

    Clayton Dias

    quinta-feira, 19 de abril de 2012 18:06
  • Antero,

    Não vejo a necessidade em habilitar esta feature, minha tabela não possui nenhum "grande" tipo de dados, ela nem passa a exceder o máximo (eu acho...rs).

    quinta-feira, 19 de abril de 2012 18:13
  • Clayton

    Existem mais campos em sua tabela fora os que vc postou na imagem?

    o artigo abaixo poderá te ajudar....

    http://blogs.msdn.com/b/msdnts/archive/2006/12/01/row-size-limitation-in-sql-2000-and-2005.aspx

    Fiz um teste no SQL 2005 e o erro não ocorreu, mas o meu SQL 2005 estava com o SP4 o seu esta muito desatualizado... é RTM ainda...


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 19 de abril de 2012 20:23
    Moderador
  • Então Marcelo,

    São apenas estas colunas, acredita que eu fiz um backup da tabela, exclui, criei uma nova, voltei o backup para esta nova, e renomeei ela.

    O insert funcionou normalmente! Será que é algum bug devido a minha versão?

    quinta-feira, 19 de abril de 2012 20:39
  • acredito que a versão RTM pode tr influencia sim...

    existe a possibilidade de vc fazer um ambiente de teste com o mesmo buid da produção e restaurar seu backup? se ocorrer o erro, aplica o SP4 no ambiente teste e testa novamente o seu insert


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 19 de abril de 2012 21:01
    Moderador
  • Marcelo,

    Boa noite, não funcionou. Agora meu SQL Server não é mais RTM: Microsoft SQL Server 2005 - 9.00.4035.00 (X64)   Nov 24 2008 16:17:31   Copyright (c) 1988-2005 Microsoft Corporation  Standard Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2) 

    Fiz um checkdb, encontrei erros, reparei. Também fiz um DBCC UPDATEUSAGE.

    Não funcionou, a solução de excluir e incluir novamente a tabela funciona.

    Grato!

    Clayton

    segunda-feira, 23 de abril de 2012 23:29
  • Pessoal,

    Estou com o mesmo problema em outra tabela, neste caso é uma tabela muito grande, e achei que realmente tinha ultrapassado, mas, fazendo o calculo sugerido no BOL, não chega 8060 bytes.

    Segue o calculo para verem se não cometi nenhum erro:

    /*	
    56 - int
    108 - numeric
    61 - datetime
    175 - char
    
    167 - varchar
    ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/81fd5ec9-ce0f-4c2c-8ba0-6c483cea6c75.htm
    */
    
    declare @Num_Cols int,
    	@Fixed_Data_Size int,
    	@Num_Variable_Cols int,
    	@Max_Var_Size int,
    	@Null_Bitmap int,
    	@Variable_Data_Size int,
    	@Row_Size int
    
    select @Num_Cols = count(object_id)
    from sys.columns
    where object_id = object_id('docto_transporte')
    
    select @Fixed_Data_Size = sum(max_length)
    from sys.columns
    where object_id = object_id('docto_transporte')
    	and system_type_id in(56,108, 61, 175)
    	
    select @Num_Variable_Cols = count(max_length)
    from sys.columns
    where object_id = object_id('docto_transporte')
    	and system_type_id = 167
    
    select @Max_Var_Size = sum(max_length)
    from sys.columns
    where object_id = object_id('docto_transporte')
    	and system_type_id = 167
    	
    select @Null_Bitmap = CONVERT(int, 2 + ((@Num_Cols + 7) / 8))
    
    select @Variable_Data_Size = 2 + (@Num_Variable_Cols * 2) + @Max_Var_Size 
    
    select @Row_Size = @Fixed_Data_Size + @Variable_Data_Size + @Null_Bitmap + 4 
    
    select @Row_Size

    O resultado foi:
    5949 bytes

    P.S. Não possuo tipo diferente destes na tabela:
    56 - int
    108 - numeric
    61 - datetime
    175 - char
    167 - varchar


    • Editado Clayton Dias terça-feira, 24 de abril de 2012 17:29 Erro
    terça-feira, 24 de abril de 2012 15:29
  • Pessoal,

    Um dbcc DBREINDEX no índice cluster da tabela funcionou.

    Alguém sabe explicar o porque?

    Clayton Dias

    terça-feira, 24 de abril de 2012 19:02
  • Deve ter sido por isso que quando você disse que apagou a tabela e a recriou funcionou.

    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 25 de abril de 2012 01:06
    Moderador