我目前正在运行第三方软件套件,它使用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.
此错误与我尝试访问的任何其他表格相同。这个错误意味着什么,有没有解决方法呢?
答案 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