none
Utilizar conteudo nvarchar > 4000bytes RRS feed

  • Pergunta

  • Bom dia.

    Declarei um variavel @comandinsert nvarchar(8000)

    e monto uma instrução nela.

    Ao tentar executar " EXEC sp_executesql  @comandoinsert"

    retorna:

    Msg 2717, Level 16, State 2, Line 57

    The size (8000) given to the parameter '@comandoinsert' exceeds the maximum allowed (4000).

    O que devo fazer para corrigir?

    Att.

    Alexandre

    terça-feira, 2 de julho de 2013 12:58

Todas as Respostas

  • Alexandre,

    Quanto temos N na frente de tipos de dados textuais utilizamos o dobro de bytes por caracter, o que faz com que o maximo especificado seja exatamente a metade, ou seja, O maximo de VARCHAR é 8000, porem de NVARCHAR é 4000.


    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
    Email: fabrizzio.antoniaci@gmail.com

    terça-feira, 2 de julho de 2013 13:06
    Moderador
  • Deleted
    terça-feira, 2 de julho de 2013 19:08
  • A.J.

    Além disso comando utilizando qualquer tipo de cada como NVarchar ou NChar, estamos fazendo uso da tabela de caracteres Unicode que nos garante maior compatibilidades com caracteres orientais, asiáticos ou especiais, por isso temos o dobro do espaço consumido.

    Um possibilidade é utilizar o Varchar(Max) ou então partir diretamente para um tipo de dados mais antigo que é o Text.


    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]

    sábado, 6 de julho de 2013 13:36