SSIS OLE DB-Quelleditor Datenzugriffsmodus: "SQL-Befehl" vs "Tabelle oder Ansicht"

7

In BIDS führe ich eine Datenflusstask aus und frage mich, was der Unterschied hinter den Kulissen zwischen der Verwendung von "Tabelle oder Ansicht" und "SQL-Befehl" für den Datenzugriffsmodus für eine OLE DB-Quelle ist. Angenommen, ich habe eine Tabelle namens mytable mit 5 Spalten (Spalte1, Spalte2, Spalte3, Spalte4, Spalte5), aber ich bin nur an Spalte1 interessiert. Ich sehe diese 2 Optionen:

  1. Ich kann entweder "Tabelle oder Ansicht" verwenden und "mytable" auswählen und dann nur "Spalte 1" im Bereich "Spalten" aktivieren.
  2. Oder ich kann "SQL Command" verwenden und diese Abfrage "select column1 from mytable" verwenden.

Als ich einen Test durchführte, schien die zweite Option viel schneller zu laufen, aber ich möchte bestätigen, was sich hinter den Kulissen abspielt, wenn ich "Tabelle oder Ansicht" verwende und dann nur bestimmte Spalten auswähle. Ich würde mich über jeden Einblick freuen, den jemand gewähren kann.

(In meinem speziellen Anwendungsfall ist mytable eine externe Azure-Datenbanktabelle, und in Spalte 2 sind große Mengen an XML enthalten. Ich vermute, dass alle Spalten über die Leitung kamen, als ich "Tabelle oder Ansicht" verwendet habe.)

jessieloo
quelle

Antworten:

7

Ich werde ein kleines Experiment machen. Ich werde SQL-Profiler verwenden, um zu sehen, was im Hintergrund läuft, während ich OLEDB Sourcein den beiden Fällen:

Ich habe eine Tabelle mit dem Namen dbo.Table_13 Spalten (ID, Name, Abteilung)

Ich habe den SQL-Profiler verwendet, um die Datenbank mit dieser Tabelle abzustimmen, und ich habe den 2-Zugriffsmodus unterhalb der Ergebnisse verwendet:

Tabelle oder Ansicht - Nur ID-Spalte auswählen

Der Profiler zeigt an, dass der folgende Befehl ausgeführt wird

SELECT * FROM [dbo].[Table_1]

Selbst wenn Sie nur eine Spalte auswählen, liest die OLEDB-Quelle alle Daten und filtert dann die Spalten, nachdem Sie alle gelesen haben.

Geben Sie hier die Bildbeschreibung ein

SQL-BEFEHL

Der Profiler zeigt an, dass der folgende Befehl ausgeführt wird

SELECT [ID] FROM [dbo].[Table_1]

Geben Sie hier die Bildbeschreibung ein


Kürzlich habe ich einen Artikel veröffentlicht, der weitere Details enthält. Sie können ihn unter folgendem Link überprüfen:

Hadi
quelle