我目前正在运行的第三方软件套件,它使用SQL Server作为其数据库。 我有一个不同的位置运行SQL Server的第二个实例,以及一些应用程序,我建立在该实例SQL服务器需要访问在第三方软件的一些数据。 所以,我创建了箱之间的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.
此错误是任何其他表我试图访问相同。 这个错误是什么意思,是有办法解决它?
我有这种情况发生过几次。 一个解决办法,我发现是使用OPENQUERY。
SELECT * FROM OPENQUERY(LinkedServerName, 'SELECT * FROM DBName.Schema.Table')
另外,你上面贴的选择有一个不正确的4部分组成的名称(可能只是一个错字,但我不知道)。 它应该是LinkedServerName.DBName.SchemaName.TableName
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)
我解决了这个这个步骤
1)步骤1:
•在SQL Server Management Studio中打开链接服务器,然后“新建链接服务器”。
•内部出现向导 - 选择常规选项卡。
•在“链接服务器”字段中指定别名。
•选择SQL Native Client作为供应商。
•在“产品名称”字段中添加SQL_SERVER(这是魔法)。
•在“数据源” - 指定的主机的名称用作链接服务器。
2)步骤2:
•在安全选项卡 - 指定正确的安全选项(如安全性上下文)
3)步骤3:
•在服务器选项选项卡 - 把“数据访问”,RPC的“RPC out”和“使用远程协作”是真实的。
4)步骤4:
• 请享用。
http://alexpinsker.blogspot.com.br/2007/08/how-to-give-alias-to-sql-linked-server.html