stackoverflow 에서이 질문 을 참조하십시오 :
EasySoft ODBC 드라이버를 사용하여 SQL Server 2008 R2 Express 인스턴스를 Interbase에 연결하고 있으며 원격 서버에서 메타 데이터를 가져 오는 데 어려움이 있습니다. 인터넷에서 살펴보면 주요 sugestions는 네 부분으로 연결된 서버 구문 대신 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 "."AUDIT_LBABKP ""이름과 일치하는 여러 테이블이 포함되어 있습니다.
언급 된 표 중 하나만 있지만.
인터넷 검색의 대안은 더 비슷해 보입니다.
SELECT * FROM OPENQUERY(<linked sevrer>, 'SELECT <column list> FROM MyTable')
그래서 내 질문은 뷰 정의에서 OPENQUERY를 사용하면 SQL Server가 Interbase로 전송되는 결과 SQL을 최적화 할 수 있습니까? 아니면 두 방법 사이에 큰 차이가 없습니까?
그것은 교차 주제이며 dba의 POV를 좋아할 것입니다.