Konfiguracja serwera: zapytania rozproszone ad hoc

Dotyczy:SQL Server

Domyślnie program SQL Server nie zezwala na rozproszone zapytania ad hoc przy użyciu poleceń OPENROWSET i OPENDATASOURCE. Gdy ta opcja jest ustawiona na 1, SQL Server zezwala na dostęp ad hoc. Jeśli ta opcja nie jest ustawiona lub jest ustawiona na 0wartość , program SQL Server nie zezwala na dostęp ad hoc.

Zapytania rozproszone ad hoc używają funkcji OPENROWSET i OPENDATASOURCE do łączenia się ze zdalnymi źródłami danych korzystającymi z OLE DB. OPENROWSET i OPENDATASOURCE powinny być używane tylko do odwołowania się do źródeł danych OLE DB, do których uzyskuje się dostęp rzadko. W przypadku wszystkich źródeł danych, do których uzyskuje się dostęp więcej niż kilka razy, zdefiniuj połączony serwer.

Włączenie korzystania z nazw ad hoc oznacza, że każde uwierzytelnione konto programu SQL Server może uzyskać dostęp do dostawcy. Administratorzy SQL Server powinni włączyć tę funkcję dla dostawców, do których dostęp z dowolnego konta lokalnego jest bezpieczny.

Uwagi

Jeśli spróbujesz nawiązać połączenie ad hoc z Ad Hoc Distributed Queries wyłączonym, zostanie wyświetlony następujący błąd:

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.

Usługi Azure SQL Database i Azure SQL Managed Instance

Zobacz porównanie funkcji: Azure SQL Database i Azure SQL Managed Instance , aby uzyskać informacje.

Przykłady

Poniższy przykład włącza Ad Hoc Distributed Queries, a następnie wysyła zapytanie do serwera o nazwie Seattle1 za pomocą funkcji 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