AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 337503
Accepted
questionto42
questionto42
Asked: 2024-03-06 07:45:17 +0800 CST2024-03-06 07:45:17 +0800 CST 2024-03-06 07:45:17 +0800 CST

odbc--chamada falhou. [Microsoft][ODBC SQL Server Driver][SQL Server]Um conflito de ordenação... no operador UNION ALL... não pode ser resolvido. (#451)

  • 772

I union allas colunas distintas das INFORMATION_SCHEMA.COLUMNSvisualizações de muitos bancos de dados que consulto com uma consulta direta:

insira a descrição da imagem aqui

select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from xyz
UNION ALL 
select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from bar
UNION ALL 
select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from foo

Meu objetivo é fazer um mapeamento rápido entre colunas antigas e novas e quaisquer outras colunas que tenham o mesmo nome, ou verificar colunas órfãs e duplicadas. Tendo o distinto TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAMEde tudo em mãos e unindo-o ao column_name consigo mesmo, obtenho um mapeamento completo de cada coluna para qualquer outra entidade que você possa encontrar.

Tudo funciona bem até que eu também tenha union alluma tabela que não seja uma INFORMATION_SCHEMA.COLUMNSvisualização, mas uma mera tabela com seu próprio agrupamento na coluna que possui os column_names não dinâmicos nas linhas da field_namecoluna. Por isso preciso fazer as mesmas colunas manualmente, como se fosse uma INFORMATION_SCHEMA.COLUMNSview:

SELECT DISTINCT 'abc' AS TABLE_CATALOG, 'dbo' AS TABLE_SCHEMA, 'xyz' AS TABLE_NAME, [xyz].field_name AS COLUMN_NAME
FROM xyz
ORDER BY [xyz].field_name;

Como a consulta reúne a saída de muitos catálogos de bancos de dados, não posso apenas codificar em TSQL no SSMS, mas preciso fazer consultas externas de vários bancos de dados e union alla saída juntos. Eu utilizo o MS Access para isso, mas você também pode atingir esse objetivo com um aplicativo de console em C# no Visual Studio.

E como eu tenho essa consulta (visualização "xyz") que preciso construir manualmente, e como sua coluna field_name tem outro agrupamento além da COLUMN_NAMEcoluna da INFORMATION_SCHEMA.COLUMNSvisualização, o seguinte erro é gerado:

Mensagem de erro em alemão:

insira a descrição da imagem aqui

odbc--chamada falhou. [Microsoft][ODBC SQL Server Driver][SQL Server]Um conflito de classificação entre "SQL_Latin1_General_CP1_CI_AS" e "Latin1_General_CI_AS" no operador UNION ALL, no qual o 4-spalte da resposta SELECT foi adicionado, não pode ser usado. (#451)

Coloque em inglês com deepl:

odbc--chamada falhou. [Microsoft][ODBC SQL Server Driver][SQL Server]Um conflito de agrupamento entre "SQL_Latin1_General_CP1_CI_AS" e "Latin1_General_CI_AS" no operador UNION ALL que ocorre na coluna 4 da instrução SELECT não pode ser resolvido. (#451)

Em seguida, tentei com o agrupamento necessário, consulte Como obtenho algo como a visualização de metadados INFORMATION_SCHEMA.COLUMNS da própria visualização INFORMATION_SCHEMA.COLUMNS? , mas com Latin1_General_CI_ASmeu agrupamento padrão do banco de dados e, portanto, com o agrupamento correto, este erro é gerado:

insira a descrição da imagem aqui

A instrução SELECT inclui uma palavra reservada ou um nome de argumento com erros ortográficos ou ausentes, ou a pontuação está incorreta.

Tentei alterar os agrupamentos de outras maneiras antes e depois disso, e parece que o MS Acces não permite alterar o agrupamento em um SELECTcomando.

Como posso me livrar desse erro?

sql-server
  • 1 1 respostas
  • 30 Views

1 respostas

  • Voted
  1. Best Answer
    questionto42
    2024-03-06T07:45:17+08:002024-03-06T07:45:17+08:00

    O erro é lançado pela coluna 4 ( field_name= COLUMN_NAME) da visão que obtenho da tabela de dados (e não como as outras, de uma INFORMATION_SCHEMA.COLUMNSvisão). Você não pode alterar o agrupamento nas consultas do MS Access, ao que parece, ele sempre mostrará o erro que já aparece na pergunta.

    Para me livrar do erro, encontrei duas soluções alternativas. Você precisa alterá-lo já no servidor, criando uma visualização ou tabela com o agrupamento correto e tomando-o como fonte, ou adota uma destas soluções alternativas:

    1. Você pode fazer uma importação completa da tabela em vez de uma consulta direta.

      insira a descrição da imagem aqui

      Então o erro desaparecerá mesmo que o agrupamento não seja o mesmo, você não precisa alterar nada, apenas substitua o nome da visualização de consulta direta pelo nome da tabela importada, basta alterar os sufixos para alterar a unionconsulta que está construído em cima.

    2. Você pode alterar um pouco a ordem das visualizações unidas, apenas experimente algumas alterações. Para mim, bastou colocar a visualização xyz que lança erros no 1º ou 2º lugar, em vez de no final da lista ou no 3º lugar. Exemplo com apenas as três visualizações.

      select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from xyz
      UNION ALL 
      select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from bar
      UNION ALL 
      select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from foo
      

      então se tornaria:

      select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from bar
      UNION ALL 
      select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from foo
      UNION ALL 
      select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from xyz
      

      Essa é a melhor solução alternativa, pois não é necessário baixar a tabela inteira.

    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve