Consultor Eletrônico



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