PROBLEMA: Distribuídas erro devolução consultas 7356 com MSDAORA

Traduções de Artigos Traduções de Artigos
Artigo: 251238 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Se alterar informações de metadados ao tempo de execução, ocorre o seguinte erro:
Servidor: Erro 7356, nível de 16, estado 1, linha 1
Fornecedor de OLE DB 'MSDAORA' fornecido metadados inconsistentes para uma coluna.
Este erro pode ocorrer quando utiliza consultas distribuídas no SQL Server que referenciam uma vista, se criar a tabela subjacente na Oracle nas seguintes condições:
  • Não especifique a condição de nulidade na instrução CREATE TABLE. - e -

  • Criar uma chave primária utilizando a instrução ALTER TABLE - e -

  • Criar uma vista que inclui o PRIMARY KEY.

Causa

IDBSchemaRowset::GetRowset para DBSCHEMA_COLUMNS devolve IS_NULLABLE como TRUE.

IColumnsInfo::GetColumnInfo no conjunto de linhas devolve DBCOLUMNFLAGS_ISNULL como FALSE.

Devido a estas discrepâncias, falhas de consultas distribuídas com o erro 7356.

O fornecedor de OLE DB, msdaora.dll, devolve as informações erradas porque os metadados Oracle devolve estão incorrecto.

Resolução

Especificar a condição de nulidade da coluna explicitamente durante a instrução CREATE TABLE.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Passos para reproduzir o comportamento

Utilize estes passos para reproduzir o comportamento:
  1. Criar a tabela de teste utilizando este código:
    CREATE TABLE MYDIST
          (GMI_ID  VARCHAR2(8)
          ,LAST_NAME VARCHAR2(20)
          ,FIRST_NAME VARCHAR2(20) )
    					
  2. Alter table utilizando este código:
       ALTER TABLE MYDIST
          ADD (CONSTRAINT MYDIST_PK PRIMARY KEY (GMI_ID))
    					
  3. Inserir dados na tabela utilizando este código:
       INSERT INTO MYDIST VALUES ('test1','row','one')
       INSERT INTO MYDIST VALUES ('test2','row','two')
    					
  4. Criar uma vista de utilização desta:
       CREATE VIEW V_MYDIST1 AS
          SELECT GMI_ID FROM MYDIST
    					
  5. Criar uma entrada de servidor ligado utilizando o ficheiro msdaora.dll e executar a consulta seguinte:
    select * from <OracleLinkedServer>..<SchemaName>.V_MYDIST1
    					
    a consulta devolve este erro:
    Servidor: Erro 7356, nível de 16, estado 1, linha 1
    Fornecedor de OLE DB 'MSDAORA' fornecido metadados inconsistentes para uma coluna. Informações de metadados foi alteradas em tempo de execução.

Propriedades

Artigo: 251238 - Última revisão: 14 de julho de 2004 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 7.0 Service Pack 1
Palavras-chave: 
kbmt kbmdacnosweep kboracle kbprb KB251238 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 251238

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com