Freigeben über


OLE DB-Quelle

Die OLE DB-Quelle extrahiert Daten aus einer Vielzahl von OLE DB-kompatiblen relationalen Datenbanken mithilfe einer Datenbanktabelle, einer Ansicht oder eines SQL-Befehls. Beispielsweise kann die OLE DB-Quelle Daten aus Tabellen in Microsoft Office Access- oder SQL Server -Datenbanken extrahieren.

Die OLE DB-Quelle stellt vier verschiedene Datenzugriffsmodi zum Extrahieren von Daten bereit:

  • Eine Tabelle oder Sicht.

  • Eine in einer Variablen angegebene Tabelle oder Sicht.

  • Die Ergebnisse einer SQL-Anweisung. Bei der Abfrage kann es sich um eine parametrisierte Abfrage handeln.

  • Die Ergebnisse einer SQL-Anweisung, die in einer Variablen gespeichert ist.

Hinweis

Wenn Sie eine SQL-Anweisung verwenden, um eine gespeicherte Prozedur aufzurufen, die Ergebnisse aus einer temporären Tabelle zurückgibt, verwenden Sie die OPTION WITH RESULT SETS, um Metadaten für das Resultset zu definieren.

Wenn Sie eine parametrisierte Abfrage verwenden, können Sie Parametern Variablen zuordnen, um die Werte einzelner Parameter in SQL-Anweisungen anzugeben.

Diese Quelle verwendet einen OLE DB-Verbindungs-Manager zum Herstellen einer Verbindung zu einer Datenquelle, und der Verbindungs-Manager gibt den zu verwendenden OLE DB-Anbieter an. Weitere Informationen finden Sie unter OLE DB Connection Manager.

Ein Integration Services -Projekt stellt außerdem das Datenquellenobjekt bereit, von dem Sie einen OLE DB-Verbindungs-Manager erstellen können, um Datenquellen und Datenquellensichten für die OLE DB-Quelle zur Verfügung zu stellen.

Je nach OLE DB-Anbieter gelten für die OLE DB-Quelle bestimmte Einschränkungen:

  • Der Microsoft OLE DB-Anbieter für Oracle unterstützt die Oracle-Datentypen BLOB, CLOB, NCLOB, BFILE oder UROWID nicht, und die OLE DB-Quelle kann keine Daten aus Tabellen extrahieren, die Spalten mit diesen Datentypen enthalten.

  • Der IBM OLE DB2-Anbieter und der Microsoft OLE DB2-Anbieter unterstützen nicht die Verwendung eines SQL-Befehls, der eine gespeicherte Prozedur aufruft. Wenn diese Art von Befehl verwendet wird, kann die OLE DB-Quelle die Spaltenmetadaten nicht erstellen. Für die Datenflusskomponenten, die im Datenfluss auf die OLE DB-Quelle folgen, sind deshalb keine Spaltendaten verfügbar, und beim Ausführen des Datenflusses wird ein Fehler gemeldet.

Die OLE DB-Quelle weist eine reguläre Ausgabe und eine Fehlerausgabe auf.

Verwenden parametrisierter SQL-Anweisungen

Die OLE DB-Quelle kann eine SQL-Anweisung zum Extrahieren von Daten verwenden. Die Anweisung kann eine SELECT- oder EXEC-Anweisung sein.

Die OLE DB-Quelle verwendet einen OLE DB-Verbindungs-Manager zum Herstellen einer Verbindung zur Datenquelle, aus der Daten extrahiert werden. Für die Benennung und Auflistung von Parametern gelten verschiedene Regeln, abhängig vom Anbieter, den der OLE DB-Verbindungs-Manager verwendet, und abhängig vom Managementsystem für relationale Datenbanken (RDBMS), zu dem der Verbindungs-Manager eine Verbindung herstellt. Wenn die Parameternamen von RDBMS zurückgegeben werden, können Sie Parameternamen verwenden, um Parameter in einer Parameterliste Parametern in einer SQL-Anweisung zuzuordnen; andernfalls werden die Parameter dem Parameter in der SQL-Anweisung anhand ihrer Ordnungsposition in der Parameterliste zugeordnet. Die jeweils unterstützten Typen von Parameternamen variieren je nach Anbieter. Beispielsweise erfordern einige Anbieter Variablen- oder Spaltennamen, andere Anbieter erfordern hingegen symbolische Namen, wie z. B. 0 oder Param0. Informationen zu den in SQL-Anweisungen zu verwendenden Parameternamen entnehmen Sie bitte der anbieterspezifischen Dokumentation.

Bei Verwendung eines OLE DB-Verbindungs-Managers können Sie keine parametrisierten Unterabfragen verwenden, das die OLE DB-Quelle keine Parameterinformationen über den OLE DB-Anbieter ableiten kann. Sie können jedoch einen Ausdruck verwenden, um die Parameterwerte in der Abfrage zu verketten und die SqlCommand-Eigenschaft der Quelle festzulegen. Im Designer von SSIS können Sie eine OLE DB-Quelle im Dialogfeld Quellen-Editor für OLE DB konfigurieren und die Parameter Variablen im Dialogfeld Abfrageparameter festlegen zuordnen.

Angeben von Parametern mithilfe der Ordnungsposition

Werden keine Parameternamen zurückgegeben, steuert die Reihenfolge, in der die Parameter in der Liste Parameter im Dialogfeld Abfrageparameter festlegen aufgelistet werden, welche Parametermarkierungen zur Laufzeit zugeordnet werden. Der erste in der Liste aufgeführte Parameter wird dem ersten ? in der SQL-Anweisung zugeordnet, der zweite Parameter dem zweiten ? usw.

Die folgende SQL-Anweisung wählt Zeilen aus der Tabelle "Product " in der AdventureWorks2012-Datenbank aus. Der erste Parameter der Mappings -Liste wird dem ersten Parameter der Color -Spalte und der zweite Parameter der Size -Spalte zugeordnet.

SELECT * FROM Production.Product WHERE Color = ? AND Size = ?

Die Parameternamen haben keine Auswirkungen. Wurde z. B. ein Parameter genauso benannt wie die Spalte, für die er gilt, jedoch nicht in der richtigen Ordnungsposition in der Parameters -Liste eingereiht, wird in der zur Laufzeit stattfindenden Parameterzuordnung die Ordnungsposition des Parameters verwendet, nicht der Parametername.

Der EXEC-Befehl erfordert in der Regel die Verwendung der Variablennamen, die in der Prozedur Parameterwerte als Parameternamen bereitstellen.

Angeben von Parametern mithilfe von Namen

Wenn die tatsächlichen Parameternamen vom RDBMS zurückgegeben werden, werden die von einer SELECT- und EXEC-Anweisung verwendeten Parameter den Namen zugeordnet. Die Parameternamen müssen den Namen entsprechen, die die gespeicherte Prozedur, die von der SELECT- oder EXEC-Anweisung ausgeführt wird, erwartet.

Die folgende SQL-Anweisung führt die gespeicherte uspGetWhereUsedProductID-Prozedur aus, die in der AdventureWorks2012-Datenbank verfügbar ist.

EXEC uspGetWhereUsedProductID ?, ?

Die gespeicherte Prozedur erwartet, dass die @StartProductID - und @CheckDate-Variablen Parameterwerte bereitstellen. Dabei ist die Reihenfolge, in der die Parameter in der Mappings -Liste angezeigt werden, irrelevant. Die einzige Voraussetzung ist, dass die Parameternamen den Variablennamen der gespeicherten Prozedur entsprechen müssen. Hierzu zählt auch das @-Zeichen.

Zuordnen von Parametern zu Variablen

Die Parameter werden Variablen zugeordnet, die die Parameterwerte zur Laufzeit bereitstellen. Bei den Variablen handelt es sich in der Regel um benutzerdefinierte Variablen, obwohl Sie auch die in Integration Services bereitgestellten Systemvariablen verwenden können. Stellen Sie beim Verwenden von benutzerdefinierten Variablen sicher, dass Sie den Datentyp auf einen Typ festlegen, der mit dem Datentyp der Spalte, auf die der zugeordnete Parameter verweist, kompatibel ist. Weitere Informationen finden Sie unter Integration Services-Variablen (SSIS).

Problembehandlung der OLE DB-Quelle

Sie können die von der OLE DB-Quelle an externe Datenanbieter gerichteten Aufrufe protokollieren. Mithilfe dieser Protokollierungsfunktion können Sie Probleme beim Laden von Daten aus externen Datenquellen durch die OLE DB-Quelle behandeln. Aktivieren Sie zum Protokollieren der von der OLE DB-Quelle an externe Datenanbieter gerichteten Aufrufe die Paketprotokollierung, und wählen Sie das Diagnostic -Ereignis auf Paketebene aus. Weitere Informationen finden Sie unter Behandeln von Problemen mit Paketausführungstools.

Konfigurieren der OLE DB-Quelle

Eigenschaften können Sie programmgesteuert oder mit dem SSIS -Designer festlegen.

Weitere Informationen zu den Eigenschaften, die Sie im OLE DB-Quell-Editor-Dialogfeld festlegen können, klicken Sie auf eines der folgenden Themen:

Das Dialogfeld Erweiterter Editor enthält die Eigenschaften, die programmgesteuert festgelegt werden können. Klicken Sie auf eines der folgenden Themen, um weitere Informationen zu den Eigenschaften zu erhalten, die Sie im Dialogfeld Erweiterter Editor oder programmgesteuert festlegen können:

Wiki-Artikel, SSIS mit Oracle Connectors, auf social.technet.microsoft.com.

Siehe auch

OLE DB-Ziel
Integration Services-Variablen (SSIS)
Datenfluss