Kbase 70391: TAF: collation conflict
Autor |
  Zelindo Silvio Petri - CAT |
Acesso |
  Público |
Publicação |
  3/26/2018 |
|
Situação:
no log do DBAccess ocorre o erro "Error : 457 (37000) (RC=-1) - [Microsoft][ODBC SQL Server Driver][SQL Server]Implicit conversion of varchar value to varchar cannot be performed because the collation of the value is unresolved due to a collation conflict. ( From tMSSQLConnection::GetQueryFile )"
Causa:
Por recomendação o Collation utilizado para criação do banco TAF é o Latin1_General_BIN.
Pode ocorrer que algumas tabelas ou campos estão com collation diferente do banco.
Solução:
A Console de Atualização do produto Datasul, possui um plugin para alteração de collate.
Fazer a adequação, conforme procedimento abaixo:
* Realize um backup do banco do TAF antes de iniciar a alteração.
* Pare todos os serviços do TAF e TAF_Dbaccess do ambiente de teste para que ninguém acesse o banco.
* Acesse a console, inserindo o login e senha para conectar de forma online
* Na tela "Ambientes Configurados" no canto superior direito, clique na opção "Plugins"
* Clique na opção "Obter novo plugin"
* Selecione "collation" e clique em "baixar"
* Selecione "Validação de COLLATION SQL Server" e clique em "executar"
Será mostrado que existem dois fixes, clique na opção "Baixar Todos"
* Clique Executar
* Na tela informe o nome dado servidor\instancia (se for nomeada) onde está o banco do TAF
* Na Autenticação, marque SQL e insira o login e senha do usuário dba "sa"
* Clique em conectar, ele deverá apresentar os bancos da instancia incluindo banco do TAF
* No campo "collation desejada" coloque Latin1_General_BIN
* Deixe selecionado apenas o banco do TAF
* Selecione primeiro a opção "Validar bancos selecionados"
* Ele irá indicar onde será salvo um arquivo .html, clique em "Iniciar validação"
O relatório indicará quantas tabelas sofrerão alteração, o tamanho, e algumas informações extras.
* Volte para a tela anterior e clique em "Corrigir bancos selecionados"
IMPORTANTE
- ao executar este procedimento, será efetivamente feito a alteração no banco e isso pode levar alguns minutos
- não pode existir outra conexão no banco alem do plugin
- deixe executando, sem interromper
Ao finalizar poderá apresentar o status de erro, mas veja no relatório se foi realizada correções.
Finalize o plugin, acesse novamente o SQL Server Management Studio e no banco "TAF_DB", execute o comando:
select c.name as 'coluna', t.name as 'tabela', c.collation_name from
sys.columns as c
inner join sys.tables as t on c.object_id = t.object_id
where collation_name is not null
and t.type = 'U'
order by 2;
Confirme que todos os campos aparecerão com a collate Latin1_General_BIN
--> Inicie os serviços do TAF e realize um novo teste.
Tickets de Referência: 1871030, 2498522