[SQL Server] Exécuter un package SSIS en mode 32 bits

  • Imprimer

-- =============================================

-- Author:        KHARROUBI ZOUHAIER

-- Create date: 29/10/2010

-- Description: Intégrer les données du fichier Excel dans une table SQLServer

-- NB :

-- 1- Le package SSIS IntegrationFichierExcel doit etre déployé sur SQLServer dans le File System

-- 2- le chemin du dtexec.exe a été précisé parceque le SSIS doit être exécutée en 32 bits

-- Le composant de conection qui permet de se connecter à Excel est en 32 bits

-- Exemple Utilisation :

--1- Mettre le fichier sur le serveur SQLSERVER_1 dans C:\TRANSFERT

--2- Lancer la procédure usp_IntegrationFichierExcel @FichierExcel = 'C:\TRANSFERT\Fichier_Transfert.xls'

-- =============================================

CREATE PROCEDURE [dbo].[usp_IntegrationFichierExcel]

       @FichierExcel    NVARCHAR(500)

AS

BEGIN

      DECLARE @ReturnCode          AS INT

      DECLARE @Max_Annee           AS INT

      DECLARE @Max_Mois       AS INT

      DECLARE @REQUETE        AS NVARCHAR(1000)

      DECLARE @CMD            AS NVARCHAR(1000)

     

      SELECT @REQUETE = N'"D:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\dtexec.exe" /dts "\File System\IntegrationFichierExcel"' + dbo.CompilerVariableSSIS(N'FichierExcel',N'User',@FichierExcel)

     

      SELECT @CMD = 'ECHO ' + @REQUETE + ' > C:\package.bat'

      --Construire le fichier C:\package.bat

      EXEC @ReturnCode = xp_cmdshell@CMD 

      --Exécuter le fichier C:\package.bat

      EXEC @ReturnCode = xp_cmdshell'C:\package.bat'

      --Supprimer le fichier C:\package.bat

      EXEC @ReturnCode = xp_cmdshell'DEL C:\package.bat'

     

END

 

-- =============================================

-- Author:  Zouhaier KHARROUBI

-- Create date:   29/10/2010

-- Description:   compiler le paramètre pour SSIS

-- =============================================

 

ALTER FUNCTION [dbo].[CompilerVariableSSIS]

  (

     @NOM_VARIABLE      VARCHAR(35)

    ,@PORTEE_VARIABLE   VARCHAR(35)

    ,@VALEUR_VARIABLE   VARCHAR(150)

  )

RETURNS VARCHAR(300)

AS 

 

BEGIN

DECLARE @RET AS VARCHAR(150)

 

SET @RET = ' /SET \Package.Variables[' + @PORTEE_VARIABLE + '::' + @NOM_VARIABLE + ']'

IF CHARINDEX(';',@VALEUR_VARIABLE)>=0

      BEGIN

            SET @RET = @RET + '.Value;' + @VALEUR_VARIABLE

      END

ELSE

      BEGIN

            SET @RET = @RET + '.Value;''''' + @VALEUR_VARIABLE + ''''''

      END

 

RETURN @RET

     

END