Udostępnij za pomocą


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 1wartość , program 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ą OPENROWSET funkcji 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 programu SQL Server powinni włączyć tę funkcję dla dostawców, którzy są bezpieczni dla dowolnego konta lokalnego w celu uzyskania dostępu.

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 umożliwia, Ad Hoc Distributed Queries a następnie wysyła zapytanie do serwera o nazwie Seattle1 przy użyciu OPENROWSET funkcji .

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