Udostępnij za pośrednictwem


Rozwiązywanie problemów z łącznikami FTP, SFTP i HTTP w usługach Azure Data Factory i Azure Synapse

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Wskazówka

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

Ten artykuł zawiera sugestie dotyczące rozwiązywania typowych problemów z łącznikami FTP, SFTP i HTTP w usługach Azure Data Factory i Azure Synapse.

FTP

Kod błędu: FtpFailedToConnectToFtpServer

  • Komunikat: Failed to connect to FTP server. Please make sure the provided server information is correct, and try again.

  • Przyczyna: Niepoprawny typ połączonej usługi może być używany dla serwera FTP, na przykład przy użyciu połączonej usługi Secure FTP (SFTP) w celu nawiązania połączenia z serwerem FTP.

  • Zalecenie: Sprawdź port serwera docelowego. FTP używa portu 21.

Kod błędu: FtpFailedToReadFtpData

  • Komunikat: Failed to read data from ftp: The remote server returned an error: 227 Entering Passive Mode (*,*,*,*,*,*).

  • Przyczyna: Zakres portów z zakresu od 1024 do 65535 nie jest otwarty dla transferu danych w trybie pasywnym obsługiwanym przez fabrykę danych lub potok usługi Synapse.

  • Zalecenie: Sprawdź ustawienia zapory serwera docelowego. Otwórz port 1024-65535 lub zakres portów określony na serwerze FTP na adres IP SHIR/Azure IR.

SFTP

Kod błędu: SftpOperationFail

  • Komunikat: Failed to '%operation;'. Check detailed error from SFTP.

  • Przyczyna: Problem z operacją SFTP.

  • Zalecenie: Sprawdź szczegóły błędu z SFTP.

Kod błędu: SftpRenameOperationFail

  • Komunikat: Failed to rename the temp file. Your SFTP server doesn't support renaming temp file, set "useTempFileRename" as false in copy sink to disable uploading to temp file.

  • Przyczyna: Serwer SFTP nie obsługuje zmiany nazwy pliku tymczasowego.

  • Zalecenie: ustaw wartość "useTempFileRename" jako false w ujściu kopiowania, aby wyłączyć przekazywanie do pliku tymczasowego.

Kod błędu: SftpInvalidSftpCredential

  • Komunikat: Invalid SFTP credential provided for '%type;' authentication type.

  • Przyczyna: Zawartość klucza prywatnego jest pobierana z usługi Azure Key Vault lub zestawu SDK, ale nie jest poprawnie zakodowana.

  • Zalecenie:

    Jeśli zawartość klucza prywatnego pochodzi z magazynu kluczy, oryginalny plik klucza może działać, jeśli przekażesz go bezpośrednio do połączonej usługi SFTP.

    Aby uzyskać więcej informacji, zobacz Kopiowanie danych z i na serwer SFTP przy użyciu Azure Data Factory lub potoków Synapse. Zawartość klucza prywatnego to zawartość klucza prywatnego SSH zakodowana w formacie base64.

    Zakoduj cały oryginalny plik klucza prywatnego przy użyciu kodowania base64 i zapisz zakodowany ciąg w magazynie kluczy. Oryginalny plik klucza prywatnego to ten, który może działać w ramach połączonej usługi SFTP, jeśli wybierzesz Przekaż z pliku.

    Oto kilka przykładów, których można użyć do wygenerowania ciągu:

    • Użyj kodu w języku C#:

      byte[] keyContentBytes = File.ReadAllBytes(Private Key Path);
      string keyContent = Convert.ToBase64String(keyContentBytes, Base64FormattingOptions.None);
      
    • Użyj kodu w języku Python:

      import base64
      rfd = open(r'{Private Key Path}', 'rb')
      keyContent = rfd.read()
      rfd.close()
      print base64.b64encode(Key Content)
      
    • Użyj narzędzia konwersji base64 innej firmy. Zalecamy użycie narzędzia Kodowanie do formatu Base64.

  • Przyczyna: wybrano nieprawidłowy format zawartości klucza.

  • Zalecenie:

    Klucz prywatny SSH w formacie PKCS#8 (rozpoczynający się od ciągu "-----BEGIN ENCRYPTED PRIVATE KEY-----") nie jest obecnie obsługiwany w celu uzyskania dostępu do serwera SFTP.

    Aby przekonwertować klucz na tradycyjny format klucza SSH, począwszy od polecenia "-----BEGIN RSA PRIVATE KEY-----", uruchom następujące polecenia:

    openssl pkcs8 -in pkcs8_format_key_file -out traditional_format_key_file
    chmod 600 traditional_format_key_file
    ssh-keygen -f traditional_format_key_file -p
    
  • Przyczyna: Nieprawidłowe poświadczenia lub zawartość klucza prywatnego.

  • Zalecenie: Aby sprawdzić, czy plik klucza lub hasło są poprawne, sprawdź dwukrotnie narzędzia, takie jak WinSCP.

Działanie kopiowania SFTP nie powiodło się

  • Objawy:

    • Kod błędu: UserErrorInvalidColumnMappingColumnNotFound
    • Komunikat o błędzie: Column 'AccMngr' specified in column mapping cannot be found in source data.
  • Przyczyna: Źródło nie zawiera kolumny o nazwie "AccMngr".

  • Rozwiązanie: Aby określić, czy kolumna "AccMngr" istnieje, sprawdź konfigurację zestawu danych dwukrotnie, mapując docelową kolumnę zestawu danych.

Kod błędu: Nie udało się połączyć z serwerem SFTP (SftpFailedToConnectToSftpServer)

  • Komunikat: Failed to connect to SFTP server '%server;'.

  • Przyczyna: Jeśli komunikat o błędzie zawiera ciąg "Operacja odczytu gniazda przekroczyła limit czasu po 30 000 milisekundach", jedną z możliwych przyczyn jest to, że niepoprawny połączony typ usługi jest używany dla serwera SFTP. Na przykład możesz użyć połączonej usługi FTP do nawiązania połączenia z serwerem SFTP.

  • Zalecenie: Sprawdź port serwera docelowego. Domyślnie sfTP używa portu 22.

  • Przyczyna: Jeśli komunikat o błędzie zawiera ciąg "Odpowiedź serwera nie zawiera identyfikacji protokołu SSH", jedną z możliwych przyczyn jest to, że serwer SFTP ograniczył połączenie. Wiele połączeń jest tworzonych w celu równoległego pobierania z serwera SFTP, a czasami występuje ograniczanie przepustowości serwera SFTP. Zazwyczaj różne serwery zwracają różne błędy w przypadku wystąpienia ograniczania przepustowości.

  • Zalecenie:

    Określ maksymalną liczbę współbieżnych połączeń zestawu danych SFTP jako 1 i uruchom ponownie działanie kopiowania. Jeśli działanie zakończy się pomyślnie, możesz mieć pewność, że ograniczenie przepustowości jest przyczyną.

    Jeśli chcesz podwyższyć poziom niskiej przepływności, skontaktuj się z administratorem SFTP, aby zwiększyć limit liczby połączeń współbieżnych, lub możesz wykonać jedną z następujących czynności:

    • Jeśli używasz własnego środowiska IR, dodaj adres IP własnej maszyny IR do listy dozwolonych.
    • Jeśli używasz środowiska Azure IR, dodaj adresy IP środowiska Azure Integration Runtime. Jeśli nie chcesz dodawać zakresu adresów IP do listy dozwolonych serwerów SFTP, użyj zamiast tego Self-hosted IR.

Kod błędu: SftpPermissionDenied

  • Komunikat: Permission denied to access '%path;'

  • Przyczyna: Określony użytkownik nie ma uprawnień do odczytu ani zapisu do folderu lub pliku podczas działania.

  • Zalecenie: przyznaj użytkownikowi uprawnienia do odczytu lub zapisu w folderze lub plikach na serwerze SFTP.

Kod błędu: SftpAuthenticationFailure

  • Komunikat: Meet authentication failure when connect to Sftp server '%server;' using '%type;' authentication type. Please make sure you are using the correct authentication type and the credential is valid. For more details, see our troubleshooting docs.

  • Przyczyna: Określone poświadczenie (hasło lub klucz prywatny) jest nieprawidłowe.

  • Zalecenie: Sprawdź swoje poświadczenia.

  • Przyczyna: Określony typ uwierzytelniania nie jest dozwolony lub nie jest wystarczający do ukończenia uwierzytelniania na serwerze SFTP.

  • Zalecenie: Zastosuj następujące opcje, aby użyć poprawnego typu uwierzytelniania:

    • Jeśli serwer wymaga hasła, użyj opcji "Podstawowa".
    • Jeśli serwer wymaga klucza prywatnego, użyj opcji "Uwierzytelnianie za pomocą klucza publicznego SSH".
    • Jeśli serwer wymaga zarówno hasła, jak i "klucza prywatnego", użyj opcji "Uwierzytelnianie wieloskładnikowe".
  • Przyczyna: Serwer SFTP wymaga "klawiatury interakcyjnej" na potrzeby uwierzytelniania, ale podano "hasło".

  • Zalecenie:

    "Keyboard-interactive" to specjalna metoda uwierzytelniania, która różni się od metody hasła. Oznacza to, że podczas logowania się do serwera należy wprowadzić hasło ręcznie i nie można użyć wcześniej zapisanego hasła. Jednak usługa Azure Data Factory (ADF) jest usługą zaplanowanego transferu danych i nie ma wyskakujących okienek wejściowych umożliwiających podanie hasła w czasie wykonywania.

    W przypadku naruszenia zabezpieczeń dostępna jest opcja symulowania danych wejściowych w tle zamiast rzeczywistego ręcznego wprowadzania danych wejściowych, co jest równoznaczne ze zmianą "klawiatury interakcyjnej" na "hasło". Jeśli możesz zaakceptować ten problem z zabezpieczeniami, wykonaj poniższe kroki, aby je włączyć:

    1. Na portalu ADF najedź kursorem na połączoną usługę SFTP i otwórz jej zawartość, wybierając przycisk 'Kod'.
    2. Dodaj "allowKeyboardInteractiveAuth": true w sekcji "typeProperties".

Nie można nawiązać połączenia z SFTP, ponieważ algorytmy wymiany kluczy dostarczone przez SFTP nie są obsługiwane w usłudze ADF.

  • Objawy: Nie możesz nawiązać połączenia z SFTP za pośrednictwem usługi ADF i otrzymujesz następujący komunikat o błędzie: Failed to negotiate key exchange algorithm.

  • Przyczyna: Algorytmy wymiany kluczy udostępniane przez serwer SFTP nie są obsługiwane w usłudze ADF. Algorytmy wymiany kluczy obsługiwane przez usługę ADF to:

    • curve25519-sha256
    • curve25519-sha256@libssh.org
    • ecdh-sha2-nistp256
    • ecdh-sha2-nistp384
    • ecdh-sha2-nistp521
    • diffie-hellman-group-exchange-sha256
    • diffie-hellman-group-exchange-sha1
    • diffie-hellman-group16-sha512
    • diffie-hellman-group14-sha256
    • diffie-hellman-group14-sha1
    • diffie-hellman-group1-sha1

    Najnowsza wersja do obsługi powyższych algorytmów wymiany kluczy w środowisku SHIR to wersja 5.19.

Kod błędu: SftpInvalidHostKeyFingerprint

  • Komunikat: Host key finger-print validation failed. Expected fingerprint is '<value in linked service>', real finger-print is '<server real value>'

  • Przyczyna: Usługa Azure Data Factory obsługuje teraz bezpieczniejsze algorytmy kluczy hosta w łączniku SFTP. W przypadku nowo dodanych algorytmów wymagane jest pobranie odpowiedniego odcisku palca na serwerze SFTP.

    Nowo obsługiwane algorytmy to:

    • ssh-ed25519
    • ecdsa-sha2-nistp256
    • ecdsa-sha2-nistp384
    • ecdsa-sha2-nistp521
  • Zalecenie: Pobierz prawidłowy odcisk palca przy użyciu nazwy klucza hosta w real finger-print z komunikatu o błędzie na serwerze SFTP. Możesz uruchomić polecenie , aby pobrać odcisk palca na serwerze SFTP. Na przykład: uruchom polecenie ssh-keygen -E md5 -lf <keyFilePath> na serwerze z systemem Linux, aby pobrać odcisk palca. Polecenie może się różnić w zależności od różnych typów serwerów.

Kod błędu: UnsupportedCompressionTypeWhenDisableChunking

  • Komunikat: "Disable chunking" is not compatible with "ZipDeflate" decompression.

  • Przyczyna: Wyłączenie fragmentacji nie jest zgodne z dekompresją ZipDeflate.

  • Zalecenie: Załaduj dane binarne do obszaru przejściowego (na przykład: Azure Blob Storage) i zdekompresuj je w innym działaniu kopiowania.

HTTP

Kod błędu: HttpFileFailedToRead

  • Komunikat: Failed to read data from http server. Check the error from http server:%message;

  • Przyczyna: Ten błąd występuje, gdy fabryka danych lub potok usługi Synapse rozmawia z serwerem HTTP, ale operacja żądania HTTP kończy się niepowodzeniem.

  • Zalecenie: Sprawdź kod stanu HTTP w komunikacie o błędzie i rozwiąż problem z serwerem zdalnym.

Kod błędu: HttpSourceUnsupportedStatusCode

  • Komunikat: Http source doesn't support HTTP Status Code '%code;'.

  • Przyczyna: ten błąd występuje, gdy usługa Azure Data Factory żąda źródła HTTP, ale otrzymuje nieoczekiwany kod stanu.

  • Zalecenie: Aby uzyskać więcej informacji na temat kodu stanu HTTP, zobacz ten dokument.

Aby uzyskać pomoc dotyczącą rozwiązywania problemów, wypróbuj następujące zasoby: