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)
ENDELSE
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
-----------------------------