Utilizzo di query pass-through come tabelle
In SQL Server le query pass-through vengono inviate a un'origine dei dati OLE DB come stringhe di query non interpretate. Le query devono essere formulate con una sintassi supportata dall'origine dei dati OLE DB. Un'istruzione Transact-SQL utilizza i risultati di una query pass-through come se si trattasse di un normale riferimento a una tabella.
Per generare un set di righe da un provider OLE DB è possibile procedere in due modi:
Fare riferimento a un oggetto dell'origine dei dati che il provider possa esporre come set di righe in formato di tabella. Questa caratteristica è supportata da tutti i provider.
Inviare al provider un comando di cui il provider stesso possa elaborare ed esporre i risultati come set di righe. Questa caratteristica richiede che il provider supporti l'oggetto OLE DB Command e le relative interfacce obbligatorie.
Se un provider supporta l'oggetto Command, per inviare comandi al provider è possibile utilizzare le funzioni Transact-SQL seguenti, denominate query pass-through:
Funzione OPENQUERY, che consente di inviare una stringa di comando a un'origine dei dati OLE DB specificando il nome di un server collegato.
Funzione OPENROWSET e funzione OPENDATASOURCE, che supportano l'invio di una stringa di comando a un'origine dei dati OLE DB. Per fare riferimento al set di righe risultante è possibile specificare un nome ad hoc.
OPENROWSET e OPENQUERY supportano le query pass-through nelle quali la stringa di query contiene la chiamata a una stored procedure solo se la query ha una delle caratteristiche seguenti:
Esegue un'unica istruzione SELECT statica.
Non utilizza istruzioni EXECUTE dinamiche.
Non esegue operazioni di modifica dei dati.
La specifica OLE DB non definisce un unico linguaggio di comando da utilizzare per tutti i provider OLE DB. I provider OLE DB possono supportare qualsiasi linguaggio di comando correlato ai dati esposti. In generale i provider OLE DB che espongono i dati in database relazionali supportano il linguaggio SQL. Gli altri tipi di provider, ad esempio quelli che espongono i dati in un file di posta elettronica o in una directory di rete, in genere supportano un linguaggio diverso.
Vedere anche