Come abilitare le query distribuite ad hoc


105

Quando eseguo una query con OPENROWSETSQL Server 2000, funziona.

Ma la stessa query in SQL Server 2008 genera il seguente errore:

SQL Server ha bloccato l'accesso a STATEMENT "OpenRowset / OpenDatasource" del componente "Query distribuite ad hoc" perché questo componente è disattivato come parte della configurazione di protezione per questo server. Un amministratore di sistema può abilitare l'utilizzo di "Query distribuite ad hoc" utilizzando sp_configure


A proposito, faresti meglio a prestare attenzione all'avviso e modificare il codice SQL per utilizzare i server collegati invece di OPENROWSET.
RBarryYoung

2
@RBarryYoung non è veramente un "avvertimento" - è solo un avviso che dice che non è abilitato. Qual è il pericolo di consentire questo?
Conrad

1
se un utente malintenzionato è stato in grado di iniettare SQL da qualche parte, l'attivazione di questa opzione potrebbe consentire loro di esaminare i file di dati di loro scelta. Se lo configuri come server collegato, vengono esposti solo i file specifici, ovvero i server collegati, e disponi della sicurezza di SQL Server integrata che potresti utilizzare, ecc.
Mike M

ma mi piace questa opzione per i miei test interni e la migrazione dei dati ... quindi cerco di usarla di nuovo :)
Mike M

Risposte:


217

Il seguente comando potrebbe aiutarti ..

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

14

Puoi controllare il seguente comando

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

O questo link alla documentazione


5
è necessario aggiungere un "GO" dopo il primo "RECONFIGURE;" altrimenti è una soluzione perfetta

1
non è necessario collegare il server prima di SELECT?
Sebastien H.

3

Se gli aggiornamenti ad hoc del catalogo di sistema sono "non supportati" o se ottieni un "Msg 5808", dovrai configurare l'override in questo modo:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE with override
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE with override
GO

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

Non hai bisogno di un GO dopo ogni riga
Rob
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.