Transformation für OLE DB-BefehlOLE DB Command Transformation

Die Transformation für OLE DB-Befehl führt eine SQL-Anweisung für jede Zeile in einem Datenfluss aus.The OLE DB Command transformation runs an SQL statement for each row in a data flow. Beispielsweise können Sie eine SQL-Anweisung ausführen, die Zeilen in einer Datenbanktabelle einfügt, aktualisiert oder löscht.For example, you can run an SQL statement that inserts, updates, or deletes rows in a database table.

Es gibt folgende Möglichkeiten, um die Transformation für OLE DB-Befehl zu konfigurieren:You can configure the OLE DB Command Transformation in the following ways:

  • Stellen Sie die SQL-Anweisung bereit, die die Transformation für jede Zeile ausführt.Provide the SQL statement that the transformation runs for each row.

  • Geben Sie an, nach wie vielen Sekunden ein Timeout bei der SQL-Anweisung eintritt.Specify the number of seconds before the SQL statement times out.

  • Geben Sie die Standardcodepage an.Specify the default code page.

    In der Regel enthält die SQL-Anweisung Parameter.Typically, the SQL statement includes parameters. Die Parameterwerte sind in externen Spalten in der Transformationseingabe gespeichert, und beim Zuordnen einer Eingabespalte zu einer externen Spalte wird eine Eingabespalte einem Parameter zugeordnet.The parameter values are stored in external columns in the transformation input, and mapping an input column to an external column maps an input column to a parameter. Angenommen, Sie möchten Zeilen in der DimProduct -Tabelle anhand des Werts in der ProductKey -Spalte suchen und diese dann löschen. Hierzu können Sie die externe Spalte Param_0 der ProductKey -Eingabespalte zuordnen und anschließend den SQL-Befehl DELETE FROM DimProduct WHERE ProductKey = ?ausführen.For example, to locate rows in the DimProduct table by the value in their ProductKey column and then delete them, you can map the external column named Param_0 to the input column named ProductKey, and then run the SQL statement DELETE FROM DimProduct WHERE ProductKey = ?.. Die Transformation für OLE DB-Befehl stellt die Parameternamen bereit, die nicht geändert werden können.The OLE DB Command transformation provides the parameter names and you cannot modify them. Die Parameternamen lauten Param_0, Param_1usw.The parameter names are Param_0, Param_1, and so on.

    Wenn Sie die Transformation für OLE DB-Befehl mithilfe des Dialogfelds Erweiterter Editor konfigurieren, können die Parameter in der SQL-Anweisung automatisch externen Spalten in der Transformationseingabe zugeordnet und die Merkmale jedes Parameters definiert werden, indem Sie auf die Schaltfläche Aktualisieren klicken.If you configure the OLE DB Command transformation by using the Advanced Editor dialog box, the parameters in the SQL statement may be mapped automatically to external columns in the transformation input, and the characteristics of each parameter defined, by clicking the Refresh button. Wenn jedoch der von der Transformation für OLE DB-Befehl verwendete OLE DB-Anbieter das Ableiten von Parameterinformationen von dem Parameter nicht unterstützt, müssen Sie die externen Spalten manuell konfigurieren.However, if the OLE DB provider that the OLE DB Command transformation uses does not support deriving parameter information from the parameter, you must configure the external columns manually. Das heißt, Sie müssen der Transformation für jeden Parameter zur externen Eingabe eine Spalte hinzufügen, die Spaltennamen aktualisieren, um Namen wie Param_0zu verwenden, den Wert der DBParamInfoFlags-Eigenschaft angeben sowie die Eingabespalten, die Parameterwerte enthalten, den externen Spalten zuordnen.This means that you must add a column for each parameter to the external input to the transformation, update the column names to use names like Param_0, specify the value of the DBParamInfoFlags property, and map the input columns that contain parameter values to the external columns.

    Der Wert von DBParamInfoFlags stellt die Merkmale des Parameters dar.The value of DBParamInfoFlags represents the characteristics of the parameter. Beispielsweise gibt der Wert 1 an, dass der Parameter ein Eingabeparameter ist, und der Wert 65 gibt an, dass der Parameter ein Eingabeparameter ist und einen NULL-Wert enthalten kann.For example, the value 1 specifies that the parameter is an input parameter, and the value 65 specifies that the parameter is an input parameter and may contain a null value. Die Werte müssen mit den Werten in der OLE DB-Enumeration DBPARAMFLAGSENUM übereinstimmen.The values must match the values in the OLE DB DBPARAMFLAGSENUM enumeration. Weitere Informationen finden Sie in der OLE DB-Referenzdokumentation.For more information, see the OLE DB reference documentation.

    Die Transformation für OLE DB-Befehl schließt die benutzerdefinierte Eigenschaft SQLCommand ein.The OLE DB Command transformation includes the SQLCommand custom property. Diese Eigenschaft kann beim Laden des Pakets mithilfe eines Eigenschaftsausdrucks aktualisiert werden.This property can be updated by a property expression when the package is loaded. Weitere Informationen finden Sie unter Integration Services-Ausdrücke (SSIS), Verwenden von Eigenschaftsausdrücken in Paketen und Benutzerdefinierte Eigenschaften von Transformationen.For more information, see Integration Services (SSIS) Expressions, Use Property Expressions in Packages, and Transformation Custom Properties.

    Diese Transformation weist eine Eingabe, eine reguläre Ausgabe und eine Fehlerausgabe auf.This transformation has one input, one regular output, and one error output.

ProtokollierungLogging

Sie können die von der Transformation für OLE DB-Befehl an externe Datenanbieter gerichteten Aufrufe protokollieren.You can log the calls that the OLE DB Command transformation makes to external data providers. Mithilfe dieser Protokollierungsfunktion können Sie Probleme bei Verbindungen mit externen Datenquellen und bei Befehlen an externe Datenquellen durch die Transformation für OLE DB-Befehl behandeln.You can use this logging capability to troubleshoot the connections and commands to external data sources that the OLE DB Command transformation performs. Aktivieren Sie zum Protokollieren der von der Transformation für OLE DB-Befehl an externe Datenanbieter gerichteten Aufrufe die Paketprotokollierung, und wählen Sie das Diagnostic -Ereignis auf Paketebene aus.To log the calls that the OLE DB Command transformation makes to external data providers, enable package logging and select the Diagnostic event at the package level. Weitere Informationen finden Sie unter Behandeln von Problemen mit Paketausführungstools.For more information, see Troubleshooting Tools for Package Execution.

Sie können die Transformation konfigurieren, indem Sie entweder den SSISSSIS -Designer oder das Objektmodell verwenden.You can configure the transformation by either using the SSISSSIS Designer or the object model. Details zum programmgesteuerten Konfigurieren dieser Transformation finden Sie im Entwicklerhandbuch.See the Developer Guide for details about programmatically configuring this transformation.

Konfigurieren der Transformation für OLE DB-BefehlConfigure the OLE DB Command Transformation

Das Paket muss bereits mindestens einen Datenflusstask und eine Quelle, wie z. B. eine Flatfilequelle oder eine OLE DB-Quelle, einschließen, damit Sie eine Transformation für OLE DB-Befehl hinzufügen und konfigurieren können.To add and configure an OLE DB Command transformation, the package must already include at least one Data Flow task and a source such as a Flat File source or an OLE DB source. Diese Transformation wird normalerweise zum Ausführen parametrisierter Abfragen verwendet.This transformation is typically used for running parameterized queries.

So konfigurieren Sie die Transformation für OLE DB-BefehlTo configure the OLE DB Command transformation

  1. Öffnen Sie in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)das Integration ServicesIntegration Services -Projekt mit dem gewünschten Paket.In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), open the Integration ServicesIntegration Services project that contains the package you want.

  2. Doppelklicken Sie im Projektmappen-Explorer auf das Paket, um es zu öffnen.In Solution Explorer, double-click the package to open it.

  3. Klicken Sie auf die Registerkarte Datenfluss , und ziehen Sie dann aus dem Fenster Toolboxdie Transformation für OLE DB-Befehl auf die Entwurfsoberfläche.Click the Data Flow tab, and then, from the Toolbox, drag the OLE DB Command transformation to the design surface.

  4. Verbinden Sie die Transformation für OLE DB-Befehl mit dem Datenfluss, indem Sie einen Konnektor (der grüne oder rote Pfeil) von einer Datenquelle oder einer vorherigen Transformation mit der Maus auf die Transformation für OLE DB-Befehl ziehen.Connect the OLE DB Command transformation to the data flow by dragging a connector—the green or red arrow—from a data source or a previous transformation to the OLE DB Command transformation.

  5. Klicken Sie mit der rechten Maustaste auf die Komponente, und wählen Sie „Bearbeiten“ oder Erweiterten Editor anzeigenaus.Right-click the component and select Edit or Show Advanced Editor.

  6. Wählen Sie auf der Registerkarte Verbindungs-Manager in der Liste Verbindungs-Manager einen OLE DB-Verbindungs-Manager aus.On the Connection Managers tab, select an OLE DB connection manager in the Connection Manager list. Weitere Informationen finden Sie unter OLE DB Connection Manager.For more information, see OLE DB Connection Manager.

  7. Klicken Sie auf die Registerkarte Komponenteneigenschaften , und klicken Sie im Feld SqlCommand auf die Schaltfläche mit den drei Punkten ( ).Click the Component Properties tab and click the ellipsis button (…) in the SqlCommand box.

  8. Geben Sie in Zeichenfolgenwert-Editordie parametrisierte SQL-Anweisung mithilfe eines Fragezeichens (?) als Parametermarkierung für jeden Parameter ein.In the String Value Editor, type the parameterized SQL statement using a question mark (?) as the parameter marker for each parameter.

  9. Klicken Sie auf Aktualisieren.Click Refresh. Wenn Sie auf Aktualisierenklicken, erstellt die Transformation eine Spalte für jeden Parameter in der Sammlung externer Spalten und legt die DBParamInfoFlags-Eigenschaft fest.When you click Refresh, the transformation creates a column for each parameter in the External Columns collection and sets the DBParamInfoFlags property.

  10. Klicken Sie auf die Registerkarte Eingabe- und Ausgabeeigenschaften .Click the Input and Output Properties tab.

  11. Erweitern Sie Eingabe des OLE DB-Befehlsund anschließend Externe Spalten.Expand OLE DB Command Input, and then expand External Columns.

  12. Überprüfen Sie, ob Externe Spalten eine Spalte für jeden Parameter in der SQL-Anweisung auflistet.Verify that External Columns lists a column for each parameter in the SQL statement. Die Spaltennamen lauten Param_0, Param_1usw.The column names are Param_0, Param_1, and so on.

    Die Spaltennamen sollten nicht geändert werden.You should not change the column names. Wenn Sie die Spaltennamen ändern, generiert Integration ServicesIntegration Services einen Überprüfungsfehler für die Transformation für den OLE DB-Befehl.If you change the column names, Integration ServicesIntegration Services generates a validation error for the OLE DB Command transformation.

    Der Datentyp sollte auch nicht geändert werden.Also, you should not change the data type. Die DataType-Eigenschaft der einzelnen Spalten wird auf den entsprechenden Datentyp festgelegt.The DataType property of each column is set to the correct data type.

  13. Falls Externe Spalten keine Spalten auflistet, müssen sie manuell hinzugefügt werden.If External Columns lists no columns you must add them manually.

    • Klicken Sie für jeden Parameter in der SQL-Anweisung einmal auf Spalte hinzufügen .Click Add Column one time for each parameter in the SQL statement.

    • Aktualisieren Sie die Spaltennamen auf Param_0, Param_1usw.Update the column names to Param_0, Param_1, and so on.

    • Geben Sie einen Wert in der DBParamInfoFlags-Eigenschaft an.Specify a value in the DBParamInfoFlags property. Der Wert muss mit einem Wert in der OLE DB-Enumeration DBPARAMFLAGSENUM übereinstimmen.The value must match a value in the OLE DB DBPARAMFLAGSENUM enumeration. Weitere Informationen finden Sie in der OLE DB-Referenzdokumentation.For more information, see the OLE DB reference documentation.

    • Geben Sie den Datentyp der Spalte und, in Abhängigkeit vom Datentyp, die Codepage, die Länge, die Genauigkeit und die Dezimalstellen der Spalte an.Specify the data type of the column and, depending on the data type, specify the code page, length, precision, and scale of the column.

    • Wenn Sie einen nicht verwendeten Parameter löschen möchten, wählen Sie den Parameter in Externe Spaltenaus, und klicken Sie auf Spalte entfernen.To delete an unused parameter, select the parameter in External Columns, and then click Remove Column.

    • Klicken Sie auf Spaltenzuordnungen , und ordnen Sie Spalten in der Liste Verfügbare Eingabespalten Parametern in der Liste Verfügbare Zielspalten zu.Click Column Mappings and map columns in the Available Input Columns list to parameters in the Available Destination Columns list.

  14. Klicken Sie auf OK.Click OK.

  15. Klicken Sie im Menü Datei auf Speichern , um das aktualisierte Paket zu speichern.To save the updated package, click Save on the File menu.

Siehe auchSee Also

Datenfluss Data Flow
Integration Services-TransformationenIntegration Services Transformations