web-dev-qa-db-fra.com

SSIS comment définir une chaîne de connexion de manière dynamique à partir d'un fichier de configuration

J'utilise SQL Server Integration Services (SSIS) dans SQL Server Business Intelligent Development Studio.

Je dois faire une tâche qui est comme suit. Je dois lire à partir d'une base de données source et la mettre dans un fichier plat de destination. Mais en même temps, la base de données source devrait être configurable.

Cela signifie que dans le gestionnaire de connexions OLEDB, la chaîne de connexion doit changer de manière dynamique. Cette chaîne de connexion doit provenir d'un fichier de configuration/XML/à plat.

J'ai lu que je pouvais utiliser des variables et des expressions pour changer la chaîne de connexion de manière dynamique. Mais comment lire la valeur de la chaîne de connexion à partir d’un fichier config/XML/flat et définir la variable?

Cette partie, je suis incapable de faire. Est-ce la bonne façon d'y parvenir? Pouvons-nous ajouter des fichiers web.config à un projet SSIS?

40
SNA

Ajoutez d’abord une variable à votre package SSIS (étendue du package) - j’ai utilisé FileName, OleRootFilePath, OleProperties, OleProvider. Le type pour chaque variable est "chaîne". Ensuite, je crée un fichier de configuration (sélectionnez chaque variable - valeur) - renseignez les valeurs dans le fichier de configuration - Par exemple: pour OleProperties - Microsoft.ACE.OLEDB.12.0; for OleProperties - Excel 8.0; HDR =, OleRootFilePath - Votre chemin de fichier Excel, FileName - FileName

Dans le gestionnaire de connexion, je définis ensuite dynamiquement l'expression - Chaîne de connexion Propriétés-> Connexion, par exemple:

 "Provider =" + @ [User :: OleProvider] + "Source de données =" + @ [User :: OleRootFilePath] 
 + @ [User :: FileName] + "; Propriétés étendues = \" "+ @ [User :: OleProperties] + "NO \" "+"; "

Ainsi, une fois que vous avez défini les valeurs des variables et que vous les avez modifiées dans votre fichier de configuration (la chaîne de connexion change de manière dynamique), cela facilite en particulier le passage des environnements de développement aux environnements de production.

30
Lekha Mathew

Quelques options:

  1. Vous pouvez utiliser Execute Package Utility pour modifier votre source de données avant d'exécuter le package. 

  2. Vous pouvez exécuter votre paquet en utilisant DTEXEC , et changer votre connexion en passant un paramètre/CONNECTION. Probablement enregistrez-le en tant que lot afin que vous n'ayez pas besoin de saisir le texte en entier la prochaine fois, il vous suffit de modifier la source de données selon vos besoins.

  3. Vous pouvez utiliser le fichier SSIS XML package configuration . Voici un marcher à travers .

  4. Vous pouvez enregistrer vos configurations dans une table de base de données.

26
Darnell

Voici quelques informations sur le mécanisme à utiliser, appelé Configurations de package: Présentation des configurations de package Integration Services . Cet article décrit 5 types de configurations:

  • Fichier de configuration XML
  • Variable d'environnement
  • Entrée de registre
  • Variable de package parent
  • Serveur SQL

Voici un exemple de configuration d’une configuration sur un gestionnaire de connexion: Configuration du package SSIS pour SQL Server Integration Services - Je me rends bien compte qu’il utilise une variable d’environnement pour la chaîne de connexion (pas une très bonne idée), mais les bases sont identiques à l'aide d'un fichier XML. Les seules étapes à modifier dans cette procédure sont le type de configuration, puis un chemin.

10
Todd McDermid

Allez dans Propriétés du package-> Configurations-> Activer les configurations de package-> Ajouter-> Fichier de configuration xml-> Spécifiez le fichier dtsconfig-> cliquez sur suivant-> dans les propriétés OLEDB, cochez la chaîne de connexion-> la valeur de la chaîne de connexion s'affiche Le paquet final est donc configuré.

Vous pouvez également ajouter une variable d'environnement dans ce processus

2
Sangeetha Bolla

Ces réponses sont correctes, mais anciennes et fonctionnent pour Depoloyement Package Model. Ce dont j'ai réellement besoin, c’est de changer le nom du serveur, le nom de la base de données d’un gestionnaire de connexion et j’ai trouvé cela très utile: 

https://www.youtube.com/watch?v=_yLAwTHH_GA

Mieux pour les personnes utilisant SQL Server 2012-2014-2016 ... avec Deployment Project Model

0
Khalil Liraqui