2012-06-11 8 views
8

Pracowałem nad ogromnym projektem ETL z ponad 150 tabelami i podczas projektowania musiałem wprowadzić istotną zmianę w docelowych nazwach kolumn i typach danych dla kilku tabel.Odświeżanie metadanych schematu docelowego w usługach integracyjnych

Mój problem polega na tym, że nie mogę uzyskać SSIS, aby zobaczyć nowy schemat dla tabel, które zmieniłem. Więc chciałbym wiedzieć, jak mogę uzyskać SSIS do odświeżenia tego schematu? Uważam, że to niedorzeczne, że nie ma sposobu, aby powiedzieć SSIS, aby zaktualizować metadane ze schematu bazy danych, szczególnie w przypadku migracji bazy danych.

Odtworzenie projektu od zera nie wchodzi w grę, ponieważ spędziłem z nim kilka godzin. Również zmiana ręcznie zmienionych kolumn o 400+ również nie jest opcją.

+1

Ten prawdopodobnie nie rozwiąże problemu, ale może pomóc. Cały pakiet SSIS to tylko xml. Możesz zmienić dane XML za pomocą "Znajdź i zamień" lub stwórz własne narzędzie. Jeśli chcesz śledzić zmiany w SSIS, musisz użyć UDM (widoki źródeł danych). – devarc

+0

Rzeczywiście zajrzałem do mojego pakietu XML, ale było o wiele za dużo kolumn do zmiany, więc nawet find/replace nie mógł go naprawić ze względu na specyfikę niektórych zmian. Dzięki. – Ucodia

Odpowiedz

1

Po wykonaniu poprzedniej automatycznej odpowiedzi, w końcu znalazłem, co uniemożliwiało odświeżenie metadanych.

Kiedy pierwotnie zmodyfikowałem bazę danych, faktycznie wykonałem inny skrypt, który tworzył DROP na stole, a następnie CREATE TABLE, aby odtworzyć tabelę od nowa. Tam SSIS nigdy nie był w stanie wykryć zmian i musiałem zrobić wszystko w mojej drugiej odpowiedzi.

Później musiałem dokonać drobnej modyfikacji i tym razem zdecydowałem się na ALTER TABLE. Magicznie, tym razem SSIS wykrył wszystkie zmiany, nawet powiadamiając mnie o odświeżeniu kolumn z zaawansowanego edytora, co działało dobrze.

Zasadniczo wszystkie te problemy zostały spowodowane przez moją słabą wiedzę na temat DBA i jej najlepszych praktyk.

1

Znalazłem sposób, aby to naprawić, ale to było trochę trudne.

Nawet jeśli całkowicie usunąłem odniesienia do tabeli z moich paczek, zawsze otrzymywałem stare metadane.

I nadal nie mają jasnego poprawkę, ale tutaj jest to, co zrobiłem, żeby go naprawić:

  • Usunięto wszelkie odniesienia do tabel źródłowych i docelowych zainteresowanych
  • Usunięto obj i folderu bin z folderu projektu
  • zapisane, a następnie ponownie zamknięte projekt
  • Utworzono przepływ danych od podstaw nowe i zaktualizowane metadanych wreszcie

Nie wiem, gdzie te informacje były przechowywane w pamięci podręcznej, ale podejrzewam, że folder obj przechowuje buforowaną kopię pakietów lub że Visual Studio przechowuje metadane w pamięci, która jest zwalniana po zamknięciu. W każdym razie, następujące kroki powinny to naprawić.

+0

Myślę, że jeśli otworzysz komponent docelowy i przejdziesz do zakładki mapowania, powinien on pobrać nowe metadane. To zwykle działa dla mnie. – rvphx

+0

To jest pierwsza rzecz, którą zrobiłem, ale zawsze dawała mi stare metadane. – Ucodia

16

Co należy zrobić, używając przycisku Advanced Editor i naciskając przycisk Refresh po lewej stronie?

+0

Głupio prosty, ale wykonał za mnie pracę! – Fishcake

+0

@Fishcake - Coś tak głupio prostego powinno być na edytorze nie-zaawansowanym (np. Normalnym). Nie wiem, dlaczego Microsoft uznał, że dobrym pomysłem jest ukrycie całej grupy, moim zdaniem (i zakładam, że opinie wielu innych osób), funkcja BASIC za edytorem zaawansowanym. – KSwift87