다음을 통해 공유


서버 구성: 임시 분산 쿼리

적용 대상: SQL Server

기본적으로 SQL Server는 OPENROWSETOPENDATASOURCE을 사용하는 임시 분산 쿼리를 허용하지 않습니다. 이 옵션을 1로 설정하면 SQL Server가 임시 액세스를 허용합니다. 이 옵션을 설정하지 않거나 0으로 설정하면 SQL Server는 임시 액세스를 허용하지 않습니다.

임시 분산 쿼리에서는 OPENROWSETOPENDATASOURCE 함수를 사용하여 OLE DB를 사용하는 원격 데이터 원본에 연결합니다. OPENROWSETOPENDATASOURCE 는 자주 액세스하지 않는 OLE DB 데이터 원본을 참조하는 데만 사용해야 합니다. 여러 차례 액세스되는 데이터 원본에 대해서는 연결된 서버를 정의하세요.

임시 이름을 사용할 수 있도록 설정하면 인증된 모든 SQL Server 계정이 공급자에 액세스할 수 있습니다. SQL Server 관리자는 모든 로컬 계정에서 안전하게 액세스할 수 있는 공급자에 대해 이 기능을 사용하도록 설정해야 합니다.

설명

Ad Hoc Distributed Queries가 비활성화된 상태에서 임시 연결을 시도하면 다음 오류가 표시됩니다.

Msg 7415, Level 16, State 1, Line 1

Ad hoc access to OLE DB provider 'Microsoft.ACE.OLEDB.12.0' has been denied. You must access this provider through a linked server.

Azure SQL Database 및 Azure SQL Managed Instance를 참조하세요.

기능 비교: Azure SQL Database 및 Azure SQL Managed Instance를 참조하세요.

예제

다음 예에서는 Ad Hoc Distributed Queries를 사용하도록 설정한 다음, Seattle1 함수를 사용하여 OPENROWSET이라는 서버를 쿼리합니다.

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'Ad Hoc Distributed Queries', 1;
GO

RECONFIGURE;
GO

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

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO