Server-Konfiguration: Verteilte Ad-hoc-Abfragen
Gilt für: SQL Server
Standardmäßig erlaubt SQL Server keine verteilten Ad-hoc-Abfragen mit OPENROWSET
und 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