2013-01-04 15 views
5

Jestem nowicjuszem w SSIS. Stworzyłem pakiet z kilkoma kontenerami sekwencji i kilkoma zadaniami w nich. Pakiet zostanie zaplanowany do automatycznego uruchamiania, a zatem chcę przechwycić błędy czasu wykonywania i status, takie jak liczba wierszy wstawionych/zaktualizowanych/usuniętych do mojej własnej tabeli rejestrowania w bazie danych SQL.SSIS Logowanie do SQL Server

Myślałem o użyciu funkcji logowania SSIS do SQL Server, aby zalogować wpisy do domyślnych tabel, a następnie utworzyć zadanie SQL, aby wstawić je do moich własnych tabel rejestrowania. Czy to dobry sposób na zrobienie tego? Czy sugerujesz inne lepsze sposoby?

Również nie mogłem uzyskać logowania SSIS do prawidłowego działania. Znalazłem internetowy blog How to create an error log or custom error log within an SSIS Package?, który opisuje proces używania logowania SSIS do zapisywania wpisów na serwerze SQL. Jednak w przeciwieństwie do wyjaśnienia na blogu, nie można wyświetlić tabel dbo.sysssislog lub dbo.sp_ssis_addlogentry utworzonych w mojej bazie danych programu SQL Server. Co muszę robić źle? Oto kroki, które podjąłem -

1. Went to SSIS Logging 
2. Selected Provider Type as SQL Server 
3. Added the OLEDB connection for Configuration 
4. Went to the Detail tabs on each sequence container and chose appropriate events 
5. Clicked "Save..." 
6. Provided the location and name for the XML file 
7. Saved the package and ran it. 

Nadal nie widzę tabeli lub procedury ssis w bazie danych. Używam SQL 2008R2.

Wszelkie sugestie i zalecenia bardzo doceniane.

Z góry dziękuję.

+0

przechowywanej proc i dziennika szablon tabeli zostaną skopiowane w katalogu masz wybrane w dostawcy dziennika, gdy pakiet po raz pierwszy wykonuje.Jest obecnie istnieje w msdb. – billinkc

Odpowiedz

9

Spójrz na # 3 na swojej liście. Zanotuj lokalizację tej bazy danych.

Przejdź do tej bazy danych w systemie SSMS. Rozwiń bazę danych (kliknij znak plus po lewej stronie).

Na miejscu tabeli:

Rozwiń tabele folder. Rozwiń folder Foldery systemowe System Tabele. Stół powinien być tam widoczny. Jego nazwa to dbo.sysssislog.

Na miejscu procedury:

Rozwiń folderu Programmability. Rozwiń folder System Stored Procedures. Procedura składowana powinna być widoczna. Jego nazwa to dbo.sp_ssis_addlogentry.

+0

Widzę teraz tabelę w bazie danych msdb.Ale nie można uzyskać niczego, aby zalogować się do niego podczas wykonywania pakietu.I nawet zmieniłem "konfigurację" do włączenia OLE D Połączenie B z bazą danych msdb na zakładce "logowanie SSIS" zakładka "Dostawca i dzienniki". Mam również wszystkie zdarzenia wybrane dla kontenera najwyższego poziomu, który spływa do wszystkich kontenerów i zadań sekwencji. Co nie powinienem robić dobrze. Dzięki. – edyleddie

+0

Kopie w bazie danych MSDB to tylko szablony. Powinieneś używać ich w innej db. Jaka była twoja db z # 3 zanim została zmieniona? Tam będą twoje przedmioty. Pamiętaj, że w 2008 i 2008 roku R2 będą obiektem systemowym. Nie jestem pewien co do 2012 roku. –

2

Re. widoczność tabeli sysssislog sys w DB użytkownika (wewnątrz folderu tabel systemowych). Ustawiłem rejestrowanie dla pakietu SSIS (2008 R2) z "Zapisuje wpisy dziennika dla zdarzeń do bazy danych SQL Server", określając DB użytkownika. Następnie uruchomiłem pakiet SSIS. Znalazłem sysssislog w folderze tabel systemowych (i zawiera oczekiwane dane). Potem zdecydowałem się przetestować, czy ta tabela jest "tworzona przy każdym uruchomieniu pakietu SSIS". Spadłem z tego stołu. Uruchomiłem pakiet SSIS ZNOWU. Tabela sysssislog rzeczywiście została utworzona (w tabeli użytkownika) i zawiera poprawne dane, OK.

Jednak nie mogłem tego zobaczyć od tamtej pory w tabelach systemowych w SSMS. Innymi słowy, tabela istnieje (np. Istnieje w sysobjectach, systables itp.), Ale nie jest pokazana na liście w eksploratorze obiektów obiektów SSMS. Rozumiem, że to nie jest błąd SSIS (SSIS naprawdę ponownie tworzy tę tabelę przy każdym uruchomieniu), ale jest to błąd SSMS (w jakiś sposób traci metadane dla tej tabeli).

Kilka razy upuściłem tę tabelę i ponownie uruchomiłem pakiet SSIS, który został ponownie utworzony i jest ponownie wypełniany dla danych z ostatniego pakietu SSIS uruchamianego za każdym razem.

Ale nigdy nie byłem w stanie zobaczyć go w przeglądarce obiektów (z pewnością odświeżyłem go na dowolnym poziomie, zamknięty/ponownie otwarty SSMS - ta tabela z jakichkolwiek powodów nigdy się nie pojawiła). Mogę wyświetlić tę tabelę systemową w bazie danych MSDB (ale jest pusta).

Powtarzające się tworzenie rejestrowania dla różnych DB (tworzenie nowego połączenia dla innego DB). Uruchom SSIS, tablica sysssislog jest tworzona i może być SEEN w tabelach systemowych (jednak ponownie, jeśli upuszczę tę tabelę, NIE będzie ona ponownie wyświetlana przy ponownym tworzeniu w przeglądarce obiektów).

Chciałam tylko udostępnić, interesujący błąd. To nigdy nie było testowane przez MS QA (powiadomienie o utworzeniu tabeli w SSMS z SSIS w drugiej i kolejnej instancji tej tabeli).

Aleksiej

1

Nawet jeśli masz włączone SSIS Logging aw przypadku staramy się wykonać zadanie (bez wykonywania rzeczywistej pakiet), to sysssislog tabela nie zostanie utworzona albo w msdb lub w wymienionym menedżer połączeń .

1

Do rejestrowania zazwyczaj pobieram informacje, które chcę, za pomocą zmiennych, a następnie na końcu procesu mam procedurę zapisaną w bazie I, która wstawia rekordy do tabeli "ProjectLog". Nie jestem pewien, czy to jest idealne, ale działa dla nas.

Powód: * Komunikaty o błędach można dostosować, dzięki czemu łatwiej jest je odczytywać i rozwiązywać problemy. * Mamy zadania "OnError" z niestandardowymi, łatwymi do zrozumienia komunikatami o błędach (np. "Proces nie został wykonany." Plik x brakuje wymaganych danych dla kolumny/pola x. " * Może dodawać dane, które są cenne dla twojej grupy wymagań biznesowych.

* Uwaga, jest to dodatkowy krok możemy zrobić, oprócz pliku tekstowego z rejestrowania błędów, które nadpisuje każdy dzień.

Powiązane problemy