PRB: Distribuidas consultas devuelto error 7356 con MSDAORA

Seleccione idioma Seleccione idioma
Id. de artículo: 251238 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Si cambia la información de metadatos en tiempo de ejecución, se produce el error siguiente:
Servidor: Msg 7356, nivel 16, estado 1, línea 1
Proveedor de OLE DB 'MSDAORA' especificó metadatos contradictorios para una columna.
Este error puede producirse al utilizar consultas distribuidas en SQL Server que hacen referencia a una vista si crea la tabla subyacente en Oracle en las siguientes condiciones:
  • No especifique la aceptación de valores NULL en la instrucción CREATE TABLE. - y -

  • Crear una clave principal mediante la instrucción ALTER TABLE - y -

  • Crear una vista que incluye PRIMARY KEY.

Causa

IDBSchemaRowset:: GetRowset para DBSCHEMA_COLUMNS devuelve IS_NULLABLE como TRUE.

IColumnsInfo:: GetColumnInfo en el conjunto de filas devuelve DBCOLUMNFLAGS_ISNULL como FALSE.

Causa de estas discrepancias, errores de las consultas distribuidas con el error 7356.

El proveedor OLE DB, msdaora.dll, devuelve la información incorrecta porque los metadatos que Oracle devuelva están incorrecto.

Solución

Especificar la capacidad de la columna Aceptar Null explícitamente durante la instrucción CREATE TABLE.

Estado

Este comportamiento es por diseño.

Más información

Pasos para reproducir este comportamiento

Siga estos pasos para reproducir el comportamiento:
  1. Crear la tabla de prueba mediante este código:
    CREATE TABLE MYDIST
          (GMI_ID  VARCHAR2(8)
          ,LAST_NAME VARCHAR2(20)
          ,FIRST_NAME VARCHAR2(20) )
    					
  2. Modificar la tabla mediante este código:
       ALTER TABLE MYDIST
          ADD (CONSTRAINT MYDIST_PK PRIMARY KEY (GMI_ID))
    					
  3. Insertar datos en la tabla mediante este código:
       INSERT INTO MYDIST VALUES ('test1','row','one')
       INSERT INTO MYDIST VALUES ('test2','row','two')
    					
  4. Crear una vista con esto:
       CREATE VIEW V_MYDIST1 AS
          SELECT GMI_ID FROM MYDIST
    					
  5. Crear una entrada de servidor vinculado mediante el archivo msdaora.dll y ejecutar la siguiente consulta:
    select * from <OracleLinkedServer>..<SchemaName>.V_MYDIST1
    					
    la consulta devuelve este error:
    Servidor: Msg 7356, nivel 16, estado 1, línea 1
    Proveedor de OLE DB 'MSDAORA' especificó metadatos contradictorios para una columna. Información de metadatos cambió en tiempo de ejecución.

Propiedades

Id. de artículo: 251238 - Última revisión: miércoles, 14 de julio de 2004 - Versión: 3.2
La información de este artículo se refiere 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
  • Service Pack 1 de Microsoft SQL Server 7.0
Palabras clave: 
kbmt kbmdacnosweep kboracle kbprb KB251238 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 251238

Enviar comentarios

 

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