Em alguns cenários como este , o SQL Server truncará silenciosamente os valores (N)VARCHAR, levando a uma séria perda de dados ao declarar variáveis incorretamente.
Descrição: O SQL Server pode ser configurado para não truncar silenciosamente os valores VARCHAR? (e emitir um erro/gerar uma exceção em vez disso)
Não, não há como mudar esse comportamento. Mas esse truncamento só acontece com atribuições de variáveis e parâmetros, não com inserções de tabela.
POR EXEMPLO
será silenciosamente truncado
mas uma inserção:
vai falhar com
Isso é uma consequência do uso permissivo de conversões implícitas do TSQL, o que é conveniente em muitos casos, mas às vezes problemático.
O Mecanismo de Banco de Dados tem alguns padrões internos para lidar com tipos de dados.
A definição dos tipos de dados
char
evarchar
é a seguinte:Para
char
evarchar
os padrões são os seguintes:Se você não definir um comprimento, o SQL Server fará isso por você.
Referência