Server-Konfiguration: Verteilte Ad-hoc-Abfragen

Gilt für: SQL Server

Standardmäßig erlaubt SQL Server keine verteilten Ad-hoc-Abfragen mit OPENROWSETund OPENDATASOURCE. Wird diese Option auf 1 festgelegt, ist in SQL Server der Ad-hoc-Zugriff zulässig. Wenn diese Option nicht festgelegt oder auf 0 festgelegt wird, ist in SQL Server kein Ad-hoc-Zugriff zulässig.

Verteilte Ad-hoc-Abfragen verwenden die Funktionen OPENROWSET und OPENDATASOURCE, um eine Verbindung mit Remotedatenquellen herzustellen, die OLE DB verwenden. OPENROWSET und OPENDATASOURCE sollten nur für Verweise auf OLE DB-Datenquellen verwendet werden, auf die selten zugegriffen wird. Definieren Sie einen Verbindungsserver für Datenquellen, auf die mehr als nur wenige Male zugegriffen wird.

Das Aktivieren der Verwendung von Ad-hoc-Namen bedeutet, dass jedes SQL Server-Konto auf den Anbieter zugreifen kann. SQL Server-Administratoren sollten diese Feature für Anbieter aktivieren, auf die jedes lokale Konto sicher zugreifen kann.

Hinweise

Wenn Sie versuchen, eine Ad-hoc-Verbindung mit Ad Hoc Distributed Queries zu deaktivieren, wird der folgende Fehler angezeigt:

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-Datenbank und Azure SQL Managed Instance

Nutzen Sie den Featurevergleich: Azure SQL-Datenbank und Azure SQL Managed Instance als Referenz.

Beispiele

Im folgenden Beispiel werden Ad Hoc Distributed Queries aktiviert und anschließend ein Server mit dem Namen Seattle1 mithilfe der OPENROWSET-Funktion abgefragt.

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