[SQL Server] Exécuter un package SSIS en mode 32 bits
-- =============================================
-- 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