none
Troca de Idioma aleatoriamente RRS feed

  • Pergunta

  • Caros amigos,

    Tenho um SQL Server 2008 R2 em Inglês. Todas as tabelas estão com padrão americano.

    Há duas semanas um problema começou a acontecer. Duas tabelas específicas (temos centenas) de um banco específico (temos dezenas) sofreram alterações no padrão de idioma dos campos das moedas passando de ingles para português. O campo é decimal (18,2). Os valores guardados com ponto (123433.00) passam a serem apresentados e manipulados com vírgula (123433,00).

    Teoricamente ninguem fez nenhuma alteração, pelo menos conscientemente.

    O segundo fato mais estranho é que o problema acaba (as tabelas voltam ao normal) momentos depois sem novamente ninguem fazer nada.

    Alguem já viu ou escutou algo parecido? Se sim pode dar uma dica do que está acontecendo?

    Obrigado desde já.

    quarta-feira, 30 de outubro de 2013 12:18

Respostas

  • Luciano,

    Se o collation está correto (idêntico ao banco de dados) e, apenas estas duas tabelas estão apresentando este problema, acredito que o ideal seja recriar as tabelas com outro nome, criando também seus índices e demais constraints que estas tabelas possuem (sempre com outros nomes) e assim que finalizar, efetuar a "carga":

    --Carga caso NÃO tenha campo IDENTITY
    INSERT INTO dbo.NovaTabela
    SELECT * FROM dbo.TabelaAntiga
    GO
    
    ----Carga caso TENHA campo IDENTITY
    SET IDENTITY_INSERT dbo.NovaTabela ON
    
    INSERT INTO dbo.NovaTabela
    (CAMPO1,CAMPO2,CAMPO3,CAMPO4)
    SELECT CAMPO1,CAMPO2,CAMPO3,CAMPO4 FROM dbo.TabelaAntiga
    
    SET IDENTITY_INSERT dbo.NovaTabela OFF
    GO

    No fim, caso seu problema esteja resolvido, renomeie estas novas tabelas com o nome destas que estão com o problema.

    Espero ter ajudado.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quarta-feira, 30 de outubro de 2013 18:53

Todas as Respostas

  • Quantos usuários acessam este banco?

    Pode ser o idioma de um usuário específico.

    A consulta que retornou formatação diferente foi feita pelo mesmo usuário?

    Eu tive problemas de conversão de dados ai defini o idioma do usuário que estava causando o problema como o idioma padrão (script no link).

    Se tiver algum problema de conversão pode utilizar o artigo abaixo.

    http://cbsa.com.br/post/a-conversao-de-um-tipo-de-dados-varchar-em-um-tipo-de-dados-datetime-resultou-em-um-valor-fora-do-intervalo.aspx

    quarta-feira, 30 de outubro de 2013 12:31
  • Oi Cesar, obrigado pela resposta.

    Usuários externos que utilizam via Management Studio são 3.

    E o banco é acessado por uma dúzia de sistemas.

    O problema quando ocorre, aparece para todos os usuários e para todos os sistemas que se relacionam com essas duas tabelas específicas.

    Não parece ser problema de visualização dos dados e sim troca "física" da formatação da tabela.

    quarta-feira, 30 de outubro de 2013 12:38
  • Luciano,

    Se tratando de TI, tudo é possível, mas acredito que "não existe milagre sem santo", então procure saber quem são os desenvolvedores que utilizam/tem acesso ao servidor.

    Se tratando de mudança de formatação de números acredito que possa ocorrer este problema em duas situações:

    - Alteração no Regional Settings do servidor;

    - Instalação de .Net Framework em português;

    Verifique se houve alguma alteração recente nestes casos.

    Espero que seja útil para você.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quarta-feira, 30 de outubro de 2013 12:55
  • Oi Durval,

    Concordo com você quando diz que tem que ter o santo..

    Não houve nenhuma das alterações citadas.

    Importante salientar. Somente duas de mais de 300 tabelas estão sendo afetadas.

    Se fosse um problema de alteração no servidor, todas as tabelas seriam afetadas.
    quarta-feira, 30 de outubro de 2013 13:03
  • Luciano,

    Provavelmente as colunas destas tabelas podem estar com collation diferente do restante do banco de dados.

    Verifique os collations da tabela utilizando o comando:

    sp_help <Nome_Tabela>

    Compare com o collation do banco de dados:

    --Veja a coluna "status"
    sp_helpdb <Nome_do_Banco>

    Caso estejam diferentes, o ideal será recriar estas tabelas com o mesmo collation do banco de dados.

    Espero que seja útil para você.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quarta-feira, 30 de outubro de 2013 13:33
  • Oi Durval,

    Estão iguais. Alías mesmo quando dá o problema o Collation da tabela continua igual.

    quarta-feira, 30 de outubro de 2013 16:54
  • Luciano,

    Se o collation está correto (idêntico ao banco de dados) e, apenas estas duas tabelas estão apresentando este problema, acredito que o ideal seja recriar as tabelas com outro nome, criando também seus índices e demais constraints que estas tabelas possuem (sempre com outros nomes) e assim que finalizar, efetuar a "carga":

    --Carga caso NÃO tenha campo IDENTITY
    INSERT INTO dbo.NovaTabela
    SELECT * FROM dbo.TabelaAntiga
    GO
    
    ----Carga caso TENHA campo IDENTITY
    SET IDENTITY_INSERT dbo.NovaTabela ON
    
    INSERT INTO dbo.NovaTabela
    (CAMPO1,CAMPO2,CAMPO3,CAMPO4)
    SELECT CAMPO1,CAMPO2,CAMPO3,CAMPO4 FROM dbo.TabelaAntiga
    
    SET IDENTITY_INSERT dbo.NovaTabela OFF
    GO

    No fim, caso seu problema esteja resolvido, renomeie estas novas tabelas com o nome destas que estão com o problema.

    Espero ter ajudado.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quarta-feira, 30 de outubro de 2013 18:53
  • Luciano,

    Tive um problema similar ao seu a algum tempo que realizei a migração de um Banco de Dados que estava em uma máquina com Windows em Português para outro Windows Server mas em lnglês, de uma base de dados com + ou - 400 uns 10 estavam apresentando esta diferença de tratamento e apresentação de dados.

    Realizei o processo de criação destas tables diretamente no novo ambiente e o problema foi contornado.

    Em outro cenário tive problemas com a conexão que era realizada via ODBC no ERP Microsiga que estava por algum motivo se perdendo para apresentar os dados.


    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]

    sexta-feira, 1 de novembro de 2013 13:19
    Moderador
  • Oi Junior, obrigado pela resposta.

    A sua descrição chegou bem perto do meu problema. No seu caso o problema começou imediatamente após a migração ou depois de um tempo?

    Porque o estranho no meu caso é que funciona normalmente há 2 anos!! Dê pouco mais de um mês para cá que começou a dar esse problema.

    E pior, o problema aparece e depois desaparece.. sem nenhuma intervenção.

    O que temos em comum é que meu BD tambem era em português e foi passado para um em inglês. Mas como disse, nunca deu problema!

    Essa base é acessada em aplicações ASP Classico (3.0).

    Abraços


    segunda-feira, 4 de novembro de 2013 11:38