Condividi tramite


Utilizzo di query pass-through come tabelle

In SQL Server 2005 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

Concetti

Query distribuite
Accesso a dati esterni

Altre risorse

FROM (Transact-SQL)
OPENDATASOURCE (Transact-SQL)
OPENQUERY (Transact-SQL)
OPENROWSET (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005