19

我目前正在运行一个第三方软件套件,它使用 SQL Server 作为其数据库。我有第二个 SQL Server 实例在不同的位置运行,并且我在该实例中构建的一些应用程序 SQL Server 需要访问第三方软件中的一些数据。因此,我在盒子之间创建了一个 ODBC 连接,并将第三方 SQL 服务器设置为我的 SQL Server 版本上的链接服务器。作为测试,我从我的 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.

对于我尝试访问的任何其他表,此错误都是相同的。这个错误是什么意思,有没有办法解决它?

4

3 回答 3

44

我已经发生过几次这种情况。我发现的一种解决方法是使用 OPENQUERY。

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

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

于 2009-07-24T18:58:20.107 回答
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)
于 2009-07-24T18:45:56.107 回答
5

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

1)第1步:

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

• 出现的向导内部– 选择常规选项卡。

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

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

• 在“产品名称”字段中添加 sql_server(这很神奇)。

• 在“数据源”中——指定要用作链接服务器的主机名。

2)第2步:

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

3)第3步:

• 在“服务器选项”选项卡中——将“数据访问”、“RPC”、“Rpc Out”和“使用远程协作”设置为 true。

4)第4步:

• 享受。

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

于 2015-02-12T19:31:35.447 回答