链接的SQL Server数据库给出“不一致的元数据”错误

时间:2009-07-24 18:25:24

标签: sql-server odbc oledb linked-server

我目前正在运行第三方软件套件,它使用SQL Server作为其数据库。我在另一个位置运行了第二个SQL Server实例,我在该实例中构建的一些应用程序SQL Server需要访问第三方软件中的某些数据。因此,我在框之间创建了一个ODBC连接,并在我的SQL Server版本上将第三方SQL服务器设置为链接服务器。作为测试,我从我的SQL服务器运行以下语句,访问第三方表之一:

SELECT * FROM LinkedServerName.SchemaName.dbo.TableName

我收到了这个错误:

OLE DB error trace [Non-interface error:  Column 'TableRowVersion' (compile-time
ordinal 4) of object '"SchemaName"."dbo"."TableName"' was reported to have a
DBCOLUMNFLAGS_ISROWVER of 0 at compile time and 512 at run time].

Msg 7356, Level 16, State 1, Line 1

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

此错误与我尝试访问的任何其他表格相同。这个错误意味着什么,有没有解决方法呢?

3 个答案:

答案 0 :(得分:37)

我已经发生了几次这种情况。我找到的一个解决方法是使用OPENQUERY。

SELECT * FROM OPENQUERY(LinkedServerName, 'SELECT * FROM DBName.Schema.Table')

此外,您在上面发布的选项有一个不正确的4部分名称(可能只是一个错字但我不确定)。它应该是LinkedServerName.DBName.SchemaName.TableName

答案 1 :(得分:8)

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

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

如果使用四部分名称语法查询链接服务器数据库中的数据,则可能会收到此错误消息。若要解决此问题,您可以使用OPENQUERY语法来查询链接的服务器数据库中的数据。您可以打开跟踪标志7300以接收有关此错误消息的更多详细信息。要打开跟踪标志7300,请运行以下Transact-SQL语句:

DBCC TRACEON(7300)

答案 2 :(得分:2)

我用这个步骤解决了这个问题

1)第1步:

•在SQL Server Management Studio中打开“链接服务器”,然后打开“新链接服务器”。

•出现在向导内部 - 选择常规选项卡。

•在"链接服务器"中指定别名。字段。

•选择SQL Native Client作为提供者。

•在"产品名称"中添加sql_server;领域(这是神奇的)。

•在"数据源" - 指定要用作链接服务器的主机名。

2)第2步:

•在“安全”选项卡中 - 指定适当的安全选项(例如安全上下文)

3)第3步:

•在“服务器选项”选项卡中 - 输入"数据访问",RPC," Rpc输出"和#34;使用远程协作"是真的。

4)第4步:

•享受。

http://alexpinsker.blogspot.com.br/2007/08/how-to-give-alias-to-sql-linked-server.html