Rozwiązywanie problemów z zasobem przechwytywania zmian danych w usłudze Azure Data Factory
DOTYCZY: Azure Data Factory Azure Synapse Analytics
Napiwek
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 zasobem przechwytywania zmian danych w usłudze Azure Data Factory.
Problem: Problem z włączaniem natywnej usługi CDC w moim źródle SQL.
W przypadku źródeł w języku SQL dostępne są dwa zestawy tabel: tabele z natywną obsługą usługi SQL CDC i tabelami z kolumnami przyrostowymi opartymi na czasie.
Wykonaj następujące kroki, aby skonfigurować natywną usługę CDC dla określonej tabeli źródłowej w bazie danych SQL.
Weź pod uwagę poniższą tabelę z identyfikatorem jako kluczem podstawowym. Jeśli klucz podstawowy znajduje się w schemacie, supports_net_changes jest domyślnie ustawiona na wartość true. Jeśli nie, skonfiguruj go przy użyciu skryptu w zapytaniu 3.
Kwerenda 1
CREATE TABLE Persons (
ID int,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Last_login DATETIME,
PRIMARY KEY (ID));
Uwaga
Obecnie zasób CDC usługi ADF ładuje tylko zmiany netto dla operacji wstawiania, aktualizowania i usuwania.
Aby włączyć usługę CDC na poziomie bazy danych, wykonaj następujące zapytanie:
Kwerenda 2
EXEC sys.sp_cdc_enable_db
Aby włączyć usługę CDC na poziomie tabeli, wykonaj następujące zapytanie:
Zapytanie 3
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo'
, @source_name = N'Persons'
, @role_name = N'cdc_admin'
, @supports_net_changes = 1
, @captured_column_list = N'ID';
Problem: Tabele są niedostępne do wybrania w procesie konfiguracji zasobów CDC.
Jeśli źródło SQL nie ma usługi SQL Server CDC z włączoną net_changed lub nie ma żadnych kolumn przyrostowych opartych na czasie, tabele w źródle będą niedostępne do wyboru.
Problem: Klaster debugowania nie jest dostępny w ciepłej puli.
Klaster debugowania nie jest dostępny w ciepłej puli. Będzie czas oczekiwania w ciągu 1+ minut.
Problem: Problemy ze śledzeniem operacji usuwania.
Obecnie zasób CDC obsługuje operacje usuwania dla następujących typów ujścia — Azure SQL Database i delta. Aby to osiągnąć na stronie mapowania kolumn, wybierz kolumnę kluczy , która może służyć do określenia, czy wiersz ze źródła pasuje do wiersza z ujścia.
Problem: Mój zasób CDC kończy się niepowodzeniem, gdy docelowa tabela SQL zawiera kolumny tożsamości.
Występuje następujący błąd podczas uruchamiania usługi CDC, gdy docelowa tabela ujścia zawiera kolumny tożsamości,
Nie można wstawić jawnej wartości dla kolumny tożsamości w tabeli "TableName", gdy IDENTITY_INSERT jest ustawiona na wartość OFF.
Uruchom następujące zapytanie, aby określić, czy masz kolumnę tożsamości w obiekcie docelowym opartym na języku SQL.
Zapytanie 4
SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'TableName'
Aby rozwiązać ten problem, możesz wykonać jedną z następujących czynności:
- Ustaw IDENTITY_INSERT na WŁ., uruchamiając następujące zapytanie na poziomie bazy danych i ponownie uruchom maper CDC
Zapytanie 5
SET IDENTITY_INSERT dbo.TableName ON;
(Lub)
- Użytkownik może usunąć określoną kolumnę tożsamości z mapowania podczas wykonywania wstawiania.
Problem: Problem z używaniem własnego środowiska Integration Runtime.
Obecnie własne środowisko Integration Runtime nie jest obsługiwane w zasobie CDC. Jeśli próbujesz nawiązać połączenie ze źródłem lokalnym, użyj środowiska Azure Integration Runtime z zarządzaną siecią wirtualną.