2015-04-20 9 views
12

Ich habe ein SSIS-Paket zum Herunterladen von Datei vom FTP-Server erstellt. Wenn ich das Paket debugge, geht alles gut. Aber wenn ich das Paket als Job-Schritt einplane, kann es manchmal keine Verbindung herstellen. Der Job ist geplant, alle 4 Stunden zu wiederholen und im Durchschnitt jeden anderen Lauf schlägt fehl mit Fehler: 0xC002918F - Die Login-Anfrage wurde abgelehnt.SSIS: FTP-Task - gleichzeitige Verbindungen

Die Verbindung ist anonym und erfordert kein Passwort

ich es für ein paar Stunden getestet habe jetzt und finde heraus, einige Informationen:

  • Wenn in FileZilla getestet, fand ich heraus, dass Der Server verweigert die zweite Verbindung, um eine Datei herunterzuladen. Einstellung der maximalen Anzahl von gleichzeitigen Verbindungen zu 1 hat es in FileZilla funktioniert
  • FTP-Befehl in der Befehlszeile funktioniert gut. Vielleicht, weil es Verbindung nach jedem erfolgreichen Befehl
  • In FTP-Verbindungs-Manager schließt, habe ich nicht die Möglichkeit zu begrenzen Anzahl der Verbindungen

Ich habe keine Möglichkeit gefunden, die Einstellungen des FTP-Servers zu sehen. Was mich am meisten verwirrt, ist die Tatsache, dass einige geplante Aufgaben gut funktionieren und einige fehlschlagen. Ich habe darin keine Regelmäßigkeit gefunden.

Was ich bisher versucht:

  • Aktiv/pasive Modus
  • Limiting Wiederholungen in FTP-Verbindungs-Manager auf 1
  • die shedule Zeit verschieben, so dass es nicht zusammen mit kollidiert andere (ältere) Aufgaben, die versuchen, vom Server herunterzuladen
  • FTP-Task auf ASCII-Modus einstellen (Der Server sagt zu FileZilla, dass er nur ASCII-Zeichen akzeptiert)

Kein Glück so weit. Immer noch einige Versuche Erfolg und andere nicht.

EDIT:

Der FTP-Server ist auf Simatic-Gerät.

Für diese Woche habe ich jede 1 Stunde geplant und das Gerät alle 30 Sekunden gepingt. Immer noch einige SSID Versuche sind nicht erfolgreich und Ping geht jedes Mal durch: -/

+0

Ich habe auch versucht, die Stückgröße ohne Erfolg zu justieren. –

+0

Könnten Sie bitte die Paketschutzeigenschaft überprüfen?Bitte legen Sie die Schutzstufeneigenschaft als 'Auf Serverspeicher und Rollen für die Zugriffssteuerung setzen' fest. – Conqueror

+0

@Jacks, ich habe diese Option nicht, da sie im SSIS-Katalog gehostet wird. –

Antwort

3

Ich denke, Sie müssen akzeptieren nur eine Umgehung in diesem Szenario verwenden, möglicherweise den SQL-Agent SSIS Job-Schritt, um nach einer Verzögerung von X Sekunden erneut zu versuchen (erweiterte Registerkarte des SQL-Jobschritts). Wir tun dies sehr, wenn wir uns mit SSIS auf Flocken-Cloud-APIs verbinden.

Oder vielleicht ein For-Loop-Container in Ihrem Paket, der bei Ausfall fortfährt & bricht auf Erfolg aus - vielleicht versuchen Sie 3 mal, um zu verbinden?

Entschuldigung, wenn Ihnen das alles schon klar ist.

+0

Vielen Dank für Ihre Antwort. Ich habe den Job so eingestellt, dass er jede Stunde läuft, und die Daten müssen maximal 4 Stunden alt sein. Der Job ist in 50% der Versuche erfolgreich, also ist es ausreichend. Ich halte diese Frage aktiv, wenn jemand die Ursache des Problems lösen kann. – DangeMask

4

Ich würde die Standard-SSIS-FTP-Task durch eine Task ausführen-Task ersetzen und WinSCP aufrufen.

https://winscp.net/eng/docs/guide_automation

Ich habe festgestellt WinSCP ist viel zuverlässiger und flexibler. Sie können eine Befehlszeile übergeben, die mithilfe von Ausdrücken erstellt wurde, um alle Funktionen der SSIS-FTP-Task abzudecken.

+0

Ein Grund für die Verwendung der FTP-Aufgabe in meinem Fall war, dass ich die Dateien löschen konnte, nachdem sie erfolgreich gesendet wurden. Ich könnte das versuchen, aber ich mache mir Sorgen, dass es das Problem, das ich habe, nicht lösen kann, weil ich nicht weiß, ob es mehrere Logins gleichzeitig sind oder einfach so viele Verbindungen in schneller Folge öffnen und schließen. –

+0

WinSCP Put und Get-Befehle haben eine Option -delete. –

+0

Nun, das könnte genau das sein, wonach ich gesucht habe. Ich muss das überprüfen. –

0

Im Dunkeln geschossen, würde es Ihnen etwas ausmachen, das Paket zu aktualisieren und DelayValidation = True zu setzen?

DelayValidation: True

Validierungsroutinen schaffen Verbindungen sie zu testen. Vielleicht ist die Validierungsroutine die andere gleichzeitige Verbindung? Einen Versuch wert?

+0

Versuchte dies, funktionierte nicht für mich, aber guter Gedanke. Ich habe anscheinend keine Probleme, wenn ich es lokal ausführe, aber wenn es auf einem Server bereitgestellt wird, der es hostet und nach einem Zeitplan ausführt, scheint es einige Dateien zu durchlaufen, anstatt zu brechen. Mein Problem kann ein wenig anders sein als die OPs, aber die überlappenden Verbindungen scheinen die Ursache zu sein. –

2

Meiner Erfahrung nach enden manchmal FILE LOCK und DB CONNECTION nicht auch nach dem Beenden der Paketausführung.

Ich schlage vor, Sie verwenden Script Task und führen Sie den Upload mit C# -Code und stellen Sie sicher, dass Sie die FTP-Verbindung am Ende schließen.

+0

oder verwenden Sie filezilla von einer Skriptaufgabe, in der Sie das Zeitlimit und automatische Wiederholungen usw. steuern können. Der Punkt ist, dass Sie nicht auf das eingebaute ftp-Objekt in SSIS angewiesen sind. Wie Mike Honey unten vorschlägt. –

+0

Ich mag es einfach, externe ausführbare Dateien zu verwenden, so viel wie ich kann;) – FLICKER

2

Früher wurde der Fehler bekannt als:

'0xC002918F',-1073573489,'DTS_E_FTPTASK_UNABLETOCONNECTTOSERVER','Unable to connect to FTP server using "__".'

Die explizit FTP-Task die Verbindung am Ende der Aktionsausführung schließt, so dass, wenn die Verbindung es bleibt offen, etwas mit Ihrem Server sein muss.

Beide CozyRock und PragmaticWorks haben fantastische FTP Aufgaben für SSIS.

Anleitung aufgeführt auf der Website von Microsoft

https://support.microsoft.com/en-us/kb/925880

https://technet.microsoft.com/en-us/library/bb794745.aspx

Neben Firewall/Berechtigungen/Einschränkungen prüfen FTP-Anmeldeinformationen oder um genau zu sein, wie sie gespeichert/abgerufen. Die Faustregel in diesem Fall ist, sich auf SQL Server zu verlassen, d. H. Paketschutzebene "Auf Serverspeicher und Rollen für die Zugriffssteuerung" zu verwenden. Dieser Ansatz sollte alle Probleme mit FTP-Anmeldeinformationen vollständig entfernen (natürlich ausgenommen mistypos).

jedoch, Dies ist die Standardeinstellung angewendet, wenn Project Deployment Model to store packages in the SSISDB catalog which is where the package you noted resides.

Verwendung Verwenden Sie XP_CMDSHELL nicht und rufen Sie externe Programme ohne geschäftliche Notwendigkeit wie das oben Plakat berät. Die Aktivierung von CMDSHELL ist ein erhebliches Sicherheitsrisiko.

Verwandte Themen