none
INSERT não armazena o valor passado RRS feed

  • Pergunta

  • Ola pessoal.

    Estou com o seguinte problema.

    Ao tentar inserir ums STRING em um campo varchar, os dados apos o insert estao diferentes.

    Passo no insert o valor '1A...20', mas quando vou na tabela, o valor gravado é '1A.20'.

    quarta-feira, 22 de julho de 2015 12:34

Respostas

Todas as Respostas

  • Deleted
    quarta-feira, 22 de julho de 2015 13:11
  • O Create é este:

    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    SET ANSI_PADDING ON
    GO
    
    CREATE TABLE [dbo].[Setor](
    	[Cod] [int] IDENTITY(1,1) NOT NULL,
    	[Setor] [varchar](20) NULL,
    	[LogAcessoUsuario] [varchar](45) NOT NULL,
    	[LogAcaoUsuario] [varchar](45) NOT NULL,
    	[LogDataUsuario] [datetime] NOT NULL,
     CONSTRAINT [PK_setor] PRIMARY KEY CLUSTERED 
    (
    	[Cod] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    
    SET ANSI_PADDING OFF
    GO
    
    ALTER TABLE [dbo].[Setor] ADD  DEFAULT (getdate()) FOR [LogDataUsuario]
    GO

    O insert é feito assim:

    INSERT INTO [YNCA-T].[dbo].[Setor]
               ([Setor]
               ,[LogAcessoUsuario]
               ,[LogAcaoUsuario])
         VALUES
               ('1A…20','ADMIN','NEW')
    GO

    quarta-feira, 22 de julho de 2015 13:14
  • Rodei o seu script e armazenou o valor correto.

    Rodei dentro do mesmo BD, apenas para ter certeza que nao seria o COLLATION.

    O que pode estar acontecendo?

    quarta-feira, 22 de julho de 2015 13:19
  • Fiz o seguinte comando neste momento na tabela Nada:

    INSERT INTO [YNCA-T].[dbo].[Nada]
               ([Texto])
         VALUES
               ('3A…20')
    GO

    Aconteceu a mesma coisa, o valor foi armazenado trocado.

    quarta-feira, 22 de julho de 2015 13:22
  • Deleted
    quarta-feira, 22 de julho de 2015 13:22
  • Nao existe nenhum trigger na tabela.

    quarta-feira, 22 de julho de 2015 13:24
  • Deleted
    quarta-feira, 22 de julho de 2015 13:45
  • Executei a procedure.

    Retornou vazio a tabela.

    YNCA-T é o banco de dados corrente.

    Se eu der um update com o valor, ele é armazenado corretamente.

    A questão é, o sistema repassa os dados, e ter de dar um UPDATE com o valor correto do nome é absurdo.

    Desde inicio do dia, que recebi a OS do problema, sem solução. Pensei no COLLATION mas nao interferiu.


    quarta-feira, 22 de julho de 2015 13:50
  • O Collation co codigo 2: 

    SQL_Latin1_General_CP850_CI_AI

    SQL_Latin1_General_CP850_CI_AI

    quarta-feira, 22 de julho de 2015 13:52
  • Deleted
    quarta-feira, 22 de julho de 2015 14:01
  • Trocar o collation da base?

    srsrrrs

    Isso vai me dar dor de cabeça.

    Bem, vou marcar como respondido.

    Obrigado pela atenção.

    quarta-feira, 22 de julho de 2015 14:05
  • Deleted
    quarta-feira, 22 de julho de 2015 14:13
  • Entao vou aguardar uma solução sua.

    Enquanto isso vou tentando aqui um paleativo.


    Leonardo Costa

    quarta-feira, 22 de julho de 2015 14:18
  • Deleted
    quarta-feira, 22 de julho de 2015 14:30
  • Seria a codificação ASCII dos caracteres?

    Os '...' estao conflitando?

    Vou verificar e retorno.


    Leonardo Costa

    quarta-feira, 22 de julho de 2015 14:43
  • Basta fazer o teste conforme abaixo nos dois bancos:

    SELECT ASCII('…')

    Banco com collation SQL_Latin1_General_CP850_CI_AI retorna 46(que é o ASCII do .)

    Banco com collation SQL_Latin1_General_CP1_CI_AS retorna 133

    Está claro o conflito.

    quarta-feira, 22 de julho de 2015 14:47
  • Deleted
    • Sugerido como Resposta Marcos SJ quinta-feira, 23 de julho de 2015 14:01
    • Marcado como Resposta Leonardo C. Vieira quinta-feira, 23 de julho de 2015 14:23
    quarta-feira, 22 de julho de 2015 18:58