请在stackoverflow上查看此问题:
我正在使用EasySoft ODBC驱动程序将SQL Server 2008 R2 Express实例链接到Interbase,并且在从远程服务器获取元数据时遇到了一些困难。从网上看,所有主要提示都使用OPENQUERY而不是链接服务器语法的四部分。
EG我目前(有问题的)方法是...
CREATE VIEW [LIVE].[vwPRDETS] AS SELECT * FROM [LBLIVE]...[PRDETS] WITH (NOLOCK)
但是在某些表上,调用视图时出现错误...
消息7353,级别16,状态1,行1链接服务器“ LBLIVE”的OLE DB提供程序“ MSDASQL”提供了不一致的元数据。在执行期间提供了一个额外的列,该列在编译时找不到。
另外,我什至无法创建一些视图,因为我得到了以下...
消息7315,级别16,状态1,第1行链接服务器“ LBLIVE”的OLE DB访问接口“ MSDASQL”包含多个与名称“ SYSDBA.AUDID_LBABKP”匹配的表。
虽然只提到了一张表。
搜索网络的另一种方法似乎更像是...
SELECT * FROM OPENQUERY(<linked sevrer>, 'SELECT <column list> FROM MyTable')
因此,我的问题是,如果我在视图定义中使用OPENQUERY,SQL Server能否优化发送到Interbase的结果SQL?还是这两种方法之间确实没有太大区别?
这是一个跨学科的话题,并且会喜欢dba的POV。