So aktivieren Sie verteilte Ad-hoc-Abfragen

105

Wenn ich eine Abfrage mit OPENROWSETin SQL Server 2000 ausführe , funktioniert dies.

Dieselbe Abfrage in SQL Server 2008 generiert jedoch den folgenden Fehler:

SQL Server hat den Zugriff auf STATEMENT 'OpenRowset / OpenDatasource' der Komponente 'Ad Hoc Distributed Queries' blockiert, da diese Komponente im Rahmen der Sicherheitskonfiguration für diesen Server deaktiviert ist. Ein Systemadministrator kann die Verwendung von verteilten Ad-hoc-Abfragen mithilfe von sp_configure aktivieren

Notfallcodierer
quelle
Übrigens sollten Sie die Warnung besser beachten und Ihren SQL-Code so ändern, dass anstelle von OPENROWSET Verbindungsserver verwendet werden.
RBarryYoung
2
@RBarryYoung es ist nicht wirklich eine "Warnung" - es ist nur ein Hinweis, dass es nicht aktiviert ist. Was ist die Gefahr, dies zu ermöglichen?
Conrad
1
Wenn ein böswilliger Benutzer SQL irgendwo einfügen konnte, kann er durch Aktivieren dieser Option Datendateien seiner Wahl prüfen. Wenn Sie es als Verbindungsserver einrichten, werden nur die spezifischen Dateien - Verbindungsserver - verfügbar gemacht (und Sie haben Ihre integrierte SQL Server-Sicherheit, die Sie möglicherweise verwenden usw.).
Mike M
Aber ich mag diese Option für meine internen Tests und Datenmigration ... daher suche ich nach einer erneuten Verwendung :)
Mike M

Antworten:

217

Der folgende Befehl kann Ihnen helfen.

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
Hasib Hasan Arnab
quelle
14

Sie können den folgenden Befehl überprüfen

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO  --Added        
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

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

Oder dieser Dokumentationslink

Félix Gagnon-Grenier
quelle
5
Sie müssen nach der ersten "RECONFIGURE" ein "GO" hinzufügen. Ansonsten ist es eine perfekte Lösung
1
Müssen Sie den Server nicht vor Ihrem SELECT verbinden?
Sebastien H.
3

Wenn Ad-hoc-Aktualisierungen des Systemkatalogs "nicht unterstützt" werden oder wenn Sie eine "Meldung 5808" erhalten, müssen Sie diese mit einer Überschreibung wie folgt konfigurieren:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE with override
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE with override
GO
Robino
quelle
2
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
user2129794
quelle
Sie brauchen nicht nach jeder Zeile ein GO
Rob