Welcome to Sign in | Help
in Search

SSIS Logging & Debugging

Last post 10-05-2006, 11:56 AM by Diana. 0 replies.
Sort Posts: Previous Next
  •  10-05-2006, 11:56 AM 257

    SSIS Logging & Debugging

    In faza de test, rulati pachetul SSIS ca pe orice proiect de VS - click pe butonul "Start Debugging".
    In primul rand va puteti da seama de ceea ce se intampla in timpul rularii dupa culoarea task-urilor: galben - in desfasurare, verde - OK, rosu - eroare.


    Tab-ul "Execution Results" listeaza pasii din cursul executiei pachetului.


    Mai departe, SSIS ofera destul de multe facilitati de "logging" si "debug".
    1. Logging-ul "tine evidenta" evenimentelor SSIS. Informatia poate fi "notata" intr-un fisier text, xml, in tabelul msdb.dbo.sysdtslog90, intr-un "trace" (sursa pentru SQL Profiler) sau in windows event log. Configurati log-ul la nivel de pachet sau de task accesand meniul SSIS ---> Logging.


    Alegeti un "log provider" la nivel de pachet - destinatia de stocare a informatiei - de exemplu un fisier XML (SSIS log providers for XML files). Alegeti "New Connection" din drop-down-ul "Configuration", selectati "Usage type ---> Create File" si specificati numele fisierului XML.


    In tab-ul Details alegeti evenimentele pe care vreti sa le logati:

    In ecranul "Advanced" puteti alege datele care vor fi notate la destinatie:

    Exemplu de fisier XML de log


    Elementul "source" contine sursa informatiei - pachet, container, task.
    * Aveti grija de dimensiunea fisierelor de log...
    Pentru exemplificarea logging-ului la nivel de task, creati un "Execute SQL Task" care executa o procedura stocata de forma:

    CREATE PROCEDURE [dbo].[DM_SSISLDExample]
        @Headline varchar(100),
        @NewsID int OUTPUT
    AS
    BEGIN
        SET NOCOUNT ON;
        INSERT INTO News(Headline)
            VALUES(@Headline)
        SET @NewsID = SCOPE_IDENTITY()
    END

    * Structura tabelului News:
    CREATE TABLE [dbo].[News](
        [NewsID] [int] IDENTITY(1,1) NOT NULL,
        [NewsGUID] [uniqueidentifier] NOT NULL CONSTRAINT [DF_News_NewsGUID]  DEFAULT (newid()),
        [Headline] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    .
    .
    .
    CONSTRAINT [PK_News] PRIMARY KEY CLUSTERED
    (
        [NewsID] ASC
    )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    In editorul task-ului alegeti un "connection type" ADO.NET (necesar daca lucrati cu proceduri) si setati IsQueryStoredProcedure = True


    Creati variabilele:
     - "news_id" de tipul Int32, la nivel de pachet
     - "headline" de tipul string, la nivel de Execute SQL Task
    In Parameter Mapping stabiliti corespondenta intre parametrii procedurii si variabile:


    * news_id va lua valoarea parametrului output @NewsID si poate fi folosita de catre un alt task.
    SSIS permite stocarea informatiei de log in destinatii diferite pentru componente diferite. De exemplu, la nivel de "Execute SQL Task" puteti alege ca "log provider" SSIS Log provider for SQL Server. Informatia va "merge" in tabelul msdb.dbo.sysdtslog90.
    *mai intai adaugati providerul dorit la nivel de pachet
    * pentru acest provider creati o noua conexiune OLEDB pe baza msdb
    * folositi proprietatea LoggingMode = UseParentSettings daca vreti ca setarile de logging ale task-ului sa fie cele ale unui container parinte

    2. SSIS permite utilizarea de breakpoints la niver de container ("ForEach loop container", "For loop container", etc.) si de task.
    Breakpoint-ul se asociaza cu un eveniment - de exemplu cu OnPreExecute si OnPostExecute. Dati un "right click" pe task si alegeti "Edit Breakpoints":


    Puteti urmari valoarea variabilei news_id inainte si dupa executia task-ului (---> OnPreExecute, OnPostExecute) in ferestrele "Watch" si "Locals".
    Fereastra "Call Stack" afiseaza task-ul curent (marcat prin sageata galbena) si parintele sau.




    3. Pentru debug pe un script task editati scriptul VB (righ click pe script task ---> Edit ---> Script ---> Design Script) si creati break points:


    Imaginea de mai jos reda ceea ce se vede in "Edit Breakpoints":

    Cand este atins break pointul, debugger-ul lanseaza VB:


    4. Comportament bizar
    Am incercat sa apas pe butonul "step over". A aparut mesajul de eroare din imagine:
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems