임시 분산 쿼리를 활성화하는 방법


105

OPENROWSETSQL Server 2000에서 쿼리를 실행 하면 작동합니다.

그러나 SQL Server 2008의 동일한 쿼리는 다음 오류를 생성합니다.

이 구성 요소가이 서버에 대한 보안 구성의 일부로 해제되어 있기 때문에 SQL Server는 구성 요소 'Ad Hoc Distributed Queries'의 'OpenRowset / OpenDatasource'STATEMENT에 대한 액세스를 차단했습니다. 시스템 관리자는 sp_configure 를 사용하여 'Ad Hoc Distributed Queries' 사용을 활성화 할 수 있습니다.


그건 그렇고, 경고에 유의하고 OPENROWSET 대신 연결된 서버를 사용하도록 SQL 코드를 변경하는 것이 좋습니다.
RBarryYoung 2013-01-27

2
@RBarryYoung은 실제로 "경고"가 아닙니다. 활성화되지 않았다는 알림 일뿐입니다. 이것을 가능하게하는 위험은 무엇입니까?
Conrad

1
악의적 인 사용자가 SQL을 어딘가에 삽입 할 수있는 경우이 옵션을 설정하면 선택한 데이터 파일을 조사 할 수 있습니다. 연결된 서버로 설정하면 특정 파일 (연결된 서버) 만 노출됩니다 (사용할 수있는 통합 SQL Server 보안이 있음).
Mike M

하지만 내부 테스트 및 데이터 마이그레이션을 위해이 옵션이 마음에 듭니다 ... 따라서 다시 사용하는 방법을 찾고 있습니다. :)
Mike M

답변:


217

다음 명령이 도움이 될 수 있습니다 ..

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

14

다음 명령을 확인할 수 있습니다.

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO  --Added        
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
     'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks2012.HumanResources.Department
      ORDER BY GroupName, Name') AS a;
GO

또는이 문서 링크


5
첫 번째 'RECONFIGURE'뒤에 'GO'를 추가해야합니다. 그렇지 않으면 완벽한 솔루션입니다

1
SELECT 전에 서버를 연결할 필요가 없습니까?
Sebastien H.

3

시스템 카탈로그에 대한 임시 업데이트가 "지원되지 않음"이거나 "Msg 5808"이 표시되는 경우 다음과 같이 재정의로 구성해야합니다.

EXEC sp_configure 'show advanced options', 1
RECONFIGURE with override
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE with override
GO

2
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO

당신은 모든 라인 후 GO를 필요로하지 않습니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.