Share via


Verwenden von Pass-Through-Abfragen als Tabellen

SQL Server sendet Pass-Through-Abfragen als nicht interpretierte Abfragezeichenfolgen an eine OLE DB-Datenquelle.Die Abfrage muss in einer von der OLE DB-Datenquelle unterstützten Syntax vorliegen. Eine Transact-SQL-Anweisung verwendet die Ergebnisse einer Pass-Through-Abfrage, als handele es sich um einen normalen Tabellenverweis.

Es gibt folgende Möglichkeiten, ein Rowset von einem OLE DB-Anbieter zu generieren:

  • Verweisen auf ein Objekt in der Datenquelle, das der Anbieter als tabellarisches Rowset bereitstellen kann. Alle Anbieter unterstützen diese Möglichkeit.

  • Senden eines Befehls an den Anbieter, der vom Anbieter verarbeitet werden kann und dessen Ergebnisse als Rowset bereitgestellt werden können. Diese Möglichkeit setzt voraus, dass der Anbieter das OLE DB-Command-Objekt und alle zugehörigen obligatorischen Schnittstellen unterstützt.

Wenn ein Anbieter das Command-Objekt unterstützt, können diese Transact-SQL-Funktionen zum Senden von Befehlen (so genannten Pass-Through-Abfragen) an den Anbieter verwendet werden:

  • OPENQUERY sendet mithilfe eines Verbindungsservernamens eine Befehlszeichenfolge an eine OLE DB-Datenquelle.

  • OPENROWSET und OPENDATASOURCE unterstützen das Senden einer Befehlszeichenfolge an eine OLE DB-Datenquelle. Auf das sich ergebende Rowset kann mit einem Ad-hoc-Namen verwiesen werden.

OPENROWSET und OPENQUERY unterstützen Pass-Through-Abfragen, deren Abfragezeichenfolge den Aufruf einer gespeicherten Prozedur enthalten, nur dann, wenn die Abfrage eines der folgenden Merkmale besitzt:

  • Sie führt eine einzige statische SELECT-Anweisung aus.

  • Sie verwendet keine dynamischen EXECUTE-Anweisungen.

  • Sie führt keine Datenänderungsvorgänge durch.

Die OLE DB-Spezifikation definiert keine einheitliche, von allen OLE DB-Anbietern zu verwendende Befehlssprache. OLE DB-Anbieter können jede Befehlssprache unterstützen, die im Zusammenhang mit den von ihnen bereitgestellten Daten steht. OLE DB-Anbieter, die die Daten in relationalen Datenbanken bereitstellen, unterstützen in der Regel die Sprache SQL. Andere Anbietertypen, wie beispielsweise Anbieter, die die Daten in einer E-Mail-Datei oder in einem Netzwerkverzeichnis bereitstellen, unterstützen im Allgemeinen eine andere Sprache.