Microsoft KB Archive/251238

= PRB: Distributed Queries Return Error 7356 with MSDAORA =

Article ID: 251238

Article Last Modified on 7/14/2004

-

APPLIES TO


 * 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

-



This article was previously published under Q251238



SYMPTOMS
If metadata information changes at execution time, the following error occurs:

Server: Msg 7356, Level 16, State 1, Line 1

OLE DB provider 'MSDAORA' supplied inconsistent metadata for a column.

This error may occur when you use distributed queries in SQL Server that reference a view if you create the underlying table in Oracle under the following conditions:
 * You do not specify Nullability in the CREATE TABLE statement. -and-


 * You create a Primary Key using the ALTER TABLE statement -and-


 * You create a view that includes the PRIMARY KEY.



CAUSE
IDBSchemaRowset::GetRowset for DBSCHEMA_COLUMNS returns IS_NULLABLE as TRUE.

IColumnsInfo::GetColumnInfo on the rowset returns DBCOLUMNFLAGS_ISNULL as FALSE.

Because of the these discrepancies, distributed queries fail with the 7356 error.

The OLE DB provider, Msdaora.dll, returns the wrong information because the metadata that Oracle returns is incorrect.



RESOLUTION
Specify the Nullability of the column explicitly during the CREATE TABLE statement.



STATUS
This behavior is by design.



Steps to Reproduce Behavior
Use these steps to reproduce the behavior:   Create the test table using this code: CREATE TABLE MYDIST (GMI_ID VARCHAR2(8)      ,LAST_NAME VARCHAR2(20)      ,FIRST_NAME VARCHAR2(20) )   Alter the table using this code: ALTER TABLE MYDIST ADD (CONSTRAINT MYDIST_PK PRIMARY KEY (GMI_ID))   Insert data into the table using this code: INSERT INTO MYDIST VALUES ('test1','row','one') INSERT INTO MYDIST VALUES ('test2','row','two')   Create a view using this: CREATE VIEW V_MYDIST1 AS     SELECT GMI_ID FROM MYDIST   Create a linked server entry using the msdaora.dll file and execute the following query: select * from <OracleLinkedServer>..<SchemaName>.V_MYDIST1 The query returns this error:

Server: Msg 7356, Level 16, State 1, Line 1

OLE DB provider 'MSDAORA' supplied inconsistent metadata for a column. Metadata information was changed at execution time.

</li></ol>

Keywords: kboracle kbprb kbmdacnosweep KB251238

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.