in
Eric Vaillancourt on SQL Server...

Composant for each pour le parcours de tables d'un BD

Last post Mon, May 5 2008 6:05 PM by Anonymous. 2 replies.
Page 1 of 1 (3 items)
Sort Posts: Previous Next
  • Tue, Apr 22 2008 11:44 AM

    Composant for each pour le parcours de tables d'un BD

    Salut à tous et félicitation pour ce nouveau forum !

    J'ai une base de données (ms sql server 2005) avec 4 tables : table0, tabl1, table2, table3. Les tables ont la même structure. Je voudrais créer un package SSIS qui fait une boucle sur ces tables (les tables de la base de données de format table*) et qui fait des actions subséquentes ...

    Une piste ?

  • Wed, Apr 23 2008 1:10 PM In reply to

    Re: Composant for each pour le parcours de tables d'un BD

    Salut,

    Dans les samples de SQL Server il ya un exemple qui fait exectement cela.  Tu trouveras le package dans le répertoire suivant: C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\SmoTablesDBCC

    L'exemple utilise "Foreach SMO Enumerator" pour boucler sur les table de la bd.

    Bonne Chance!

    Eric

    Filed under: , ,
  • Mon, May 5 2008 6:05 PM In reply to

    Re: Composant for each pour le parcours de tables d'un BD

    Bonjour Eric,
     
    J'ai étudier l'exemple de Microsoft mais mon package n'arrive pas à executer. 
     
    Je tente de mettre d'utiliser un FOREACHLOOP qui va lire une table contenant le nom des tables à importer d'une base de donnée PROGRESS pour les amener sur SQL.
    L'import des données dans SQL se fait en utilisant une stored procedure. J'ai testé la stored procedure et je sais qu'elle fonctionne.
    Mon problème survient losque je dois passer le nom de la table à partir de la variable du FOREACHLOOP vers le Execute SQL Task.
     
    De toute les combinaisons que j'ai essyer, rien ne fonctionne.
     
    Ma stroed procedure a seulement besoin de recevoir le nom de la table à importer.
    Je sais qu'il existe de meilleur façon de faire pour avoir une meilleur visibilité sur le processus au complet, mais je préfère commencer par quelque chose de plus simple.
     
     
    merci
     
    Voila un exemple de ma stored procedure:
    (SISCA_DIRECT est une base de donnée SQL avec des vues liées sur ma BD PROGRESS via linked server)
     
    ------------
    ALTER PROC [dbo].[stp_Update]

    -- Add the parameters for the stored procedure here

    @SiscaName nvarchar(15) = ''

    AS

    BEGIN

    SET NOCOUNT ON;

    SELECT @SiscaName

    IF NOT EXISTS ( Select name from SISCA_COPY.sys.tables WHERE name = @SiscaName)

    BEGIN

     

    DECLARE @query varchar(250)

    SET @query = 'SELECT * INTO [SISCA_COPY].dbo.' + @Siscaname + ' From [Sisca_Direct].[dbo].' +

    @SiscaName

     

    EXEC (@query)

     

    END

    ELSE

    BEGIN

    /*If table already exists in SISCA_COPY:  refresh data

    */

     

    DECLARE @delQuery nvarchar(500)

    DECLARE @insQuery nvarchar(500)

     

    SET @delQuery = 'DELETE SISCA_COPY.dbo.' + @SiscaName

    EXEC (@delQuery)

    SET @insQuery ='INSERT INTO SISCA_COPY.dbo.' + @SiscaName + ' SELECT * FROM SISCA_DIRECT.dbo.' + @SiscaName

    EXEC(@insQuery)

    END

    END

    -----------------------------

    Filed under: , ,
Page 1 of 1 (3 items)
©2008 SQLProf.com & Eric Vaillancourt
Powered by Community Server (Non-Commercial Edition), by Telligent Systems