2016-07-26 4 views
0

Ich habe ein SSIS-Paket, das eine ADO NET Source-Komponente verwendet, um eine Anzahl von Zeilen aus einer Datenbank auszuwählen und diese Datensätze in eine andere Tabelle einzufügen.Abfrage läuft länger als Befehlszeitüberschreitung SSIS

Das Standard-Befehlszeitlimit für diese Komponente betrug 30 Sekunden. Die Abfrage kann jedoch viel länger als diese 30-Sekunden-Periode ausgeführt werden. Bei einigen Tests scheint dieses Zeitlimit nur die erste Zeile zurückzugeben. Wenn dies gelingt, kann die Abfrage bei Bedarf für 1000 Sekunden ausgeführt werden.

Wenn in den ersten 30 Sekunden keine Zeile zurückgegeben wird, schlägt der Pre-Execute-Teil der Komponente fehl. Was ich gelesen habe, ist der Zeitraum zwischen dem Start der Abfrage und der Rückgabe der ersten Zeile.

Dies scheint zu widersprechen mit allem, was ich bei Google über diese Eigenschaft finden kann. Sie scheinen zu sagen, dass das Befehls-Timeout die Abfrage vollständig ausführen soll. Das sehe ich nicht.

Kann jemand klären, für was diese Befehlsauszeit eigentlich ist?

EDIT: Links zu Screenshots der SSIS-Komponente und der Eigenschaft (CommandTimeout), die ich abfrage.

Properties

Component

Meine Frage ist innerhalb dieser 30 Sekunden Timeout-Zeit zu sein, nicht um die Abfrage Zeit reduziert wird, aber warum Hinrichtung, die länger als 30 Sekunden dauern, sind Zeit nicht aus.

Der 1000-sekündige Durchlauf dieses Pakets war einer von run, der 17GB ~ Daten über Server bewegte, dies ist kein normaler Durchlauf des Pakets, aber ich habe es nur benutzt, um zu zeigen, dass dieses Paket deutlich darüber liegt 30 Sekunden Befehlszeitüberschreitung

+0

Können Sie bitte aktualisieren Sie Ihre Frage mit Eigenschaften, die Sie haben Fragen mit – TheGameiswar

+2

1000 Sekunden ist über 15 Minuten. Das ist zu lang. Meine Vermutung ist, dass wir zunächst die Anfrage korrigieren und dann das Timeout anpassen müssen. –

Antwort

0

Es ist eine clientseitige Einstellung, die der Client verwendet, um festzustellen, ob eine Abfrage nicht antwortet. Der Client versucht dann, einen Befehl an den Server zu senden, um die Abfrage abzubrechen.

Sie haben Recht, dass die verfügbaren Informationen ein bisschen vage sind, sogar was auf MSDN ist. Aus meinen persönlichen Beobachtungen stimme ich Ihren Erkenntnissen zu, dass, wenn der Client beginnt, Daten vom Server vor dem Timeout zu empfangen, er so lange ausgeführt werden kann, wie er benötigt.

Ich denke auf diese Weise. Wenn die erste Datenzeile bereit ist, zurückgegeben zu werden, ist die Abfrage selbst beendet, und nur die Bewegung der Daten bleibt bestehen. Also, per Definition hat die Abfrage keine Zeitüberschreitung.

+0

Danke, das war meine Annahme basierend auf den Tests, die ich gemacht habe, ich konnte einfach keine Ressourcen finden, um es online zu sichern –

+0

http://geekswithblogs.net/SQLMonger/archive/2011/02/13/first-forayndashabout- timeout.aspx Dies scheint auch das Gleiche zu sagen –