이것은 나를 위해 작동합니다 : (예 :에서 반환 된 30+ 중 2 열 만 필요합니다 sp_help_job)
SELECT name, current_execution_status
FROM OPENQUERY (MYSERVER,
'EXEC msdb.dbo.sp_help_job @job_name = ''My Job'', @job_aspect = ''JOB''');
이것이 작동하기 전에 이것을 실행해야했습니다.
sp_serveroption 'MYSERVER', 'DATA ACCESS', TRUE;
.... sys.servers테이블 을 업데이트 합니다. (즉, OPENQUERY 내에서 자체 참조 사용은 기본적으로 비활성화되어있는 것 같습니다.)
간단한 요구 사항에 대해서는 Lance의 우수한 링크의 OPENQUERY 섹션 에 설명 된 문제가 발생하지 않았습니다 .
Rossini, 이러한 입력 매개 변수를 동적으로 설정해야하는 경우 OPENQUERY 사용이 조금 더 어려워집니다.
DECLARE @innerSql varchar(1000);
DECLARE @outerSql varchar(1000);
-- Set up the original stored proc definition.
SET @innerSql =
'EXEC msdb.dbo.sp_help_job @job_name = '''+@param1+''', @job_aspect = N'''+@param2+'''' ;
-- Handle quotes.
SET @innerSql = REPLACE(@innerSql, '''', '''''');
-- Set up the OPENQUERY definition.
SET @outerSql =
'SELECT name, current_execution_status
FROM OPENQUERY (MYSERVER, ''' + @innerSql + ''');';
-- Execute.
EXEC (@outerSql);
sp_serveroption기존 sys.servers자체 참조를 직접 업데이트하는 데 사용 하는 sp_addlinkedserver것과 Lance의 링크에 설명 된대로 사용하여 중복 / 별칭을 만드는 것의 차이점 (있는 경우)을 확신하지 못합니다 .
참고 1 : OPENQUERY가 proc 내에서 연결 문자열 정의를 요구하지 않는다는 점에서 OPENROWSET보다 OPENQUERY를 선호합니다.
주 2 : :) 네, 10 분 추가 입력,하지만 그것을 도울 수 있다면, 나는 주변에 소형 어선 안함 보통 그냥 INSERT ... EXEC을 사용 :이 모든 것을 말해 두 겠는데
따옴표 내에서의 (a) 따옴표 내 따옴표 및
(b) sys 테이블 및 / 또는 부적절한 자체 참조 링크 된 서버 설정 (즉,이 경우 모든 강력한 DBA에게 사례를 요구해야합니다.)
그러나이 인스턴스에서는 sp_help_job이미 INSERT ... EXEC 구문을 사용할 수 없었습니다 . ( "INSERT EXEC 문은 중첩 될 수 없습니다."