我使用EasySoft ODBC驱动程序将SQL Server 2008 R2 Express实例链接到Interbase,我在从远程服务器获取元数据时遇到了一些困难。从网上看,主要的sugestions都提到使用OPENQUERY而不是四部分链接的服务器语法。
E.G。我当前(有问题的)方法是......
CREATE VIEW [LIVE].[vwPRDETS]
AS
SELECT *
FROM [LBLIVE]...[PRDETS] WITH (NOLOCK)
但在某些表格中,我在调用视图时遇到错误...
Msg 7353,Level 16,State 1,Line 1 OLE DB提供程序“MSDASQL”for 链接服务器“LBLIVE”提供了不一致的元数据。一个额外的专栏 在执行期间提供,但在编译时未找到。
此外,我甚至无法创建一些观点,因为我得到以下内容......
Msg 7315,Level 16,State 1,Line 1 OLE DB提供程序“MSDASQL”for 链接服务器“LBLIVE”包含多个与名称匹配的表 “” SYSDBA “ ”AUDIT_LBABKP“”。
虽然只提到了一个表格。
搜索网络的替代方法似乎更像......
SELECT *
FROM OPENQUERY(<linked sevrer>, 'SELECT <column list> FROM MyTable')
所以,我的问题是,如果我在视图定义中使用OPENQUERY,SQL Server是否能够优化生成的SQL发送到Interbase?或者这两种方法之间真的没什么区别吗?