1
votes

Projet SSIS - Déploiement de catalogue - Variable d'environnement (pour l'emplacement) accédant au serveur de fichiers mappé à un lecteur Z local - Problème de l'Agent SQL Server

J'ai un package SSIS qui lit un certain nombre de fichiers à l'aide d'un conteneur de boucle For Each. Il y a un certain nombre des paramètres de ce package et dans le catalogue des services d'intégration du SSMS, j'ai créé un environnement avec de nombreuses variables pour ce projet / package.

Il existe un certain nombre de variables d'environnement pour ce package. Il existe une variable d'environnement particulière pour l'emplacement source.

Dans mes paramètres DEV, j'ai pu transmettre la variable d'environnement Emplacement source comme suit:

Z:\Data Repository\X

Tout va bien. Le package fonctionne parfaitement et For Each Loop Container fonctionne lit les fichiers.

Cependant, dans le paramètre PROD, je dois utiliser un serveur de fichiers, mappé sur un lecteur Z.

Pour exemple:

This PC > Data Repository (\\tordfs) (Z:) > Data Repository > X

devient

C:\Data Repository\Files    (in a local machine).

lorsque je copie le chemin.

Dans le package SSIS , Je suis en mesure de définir la valeur du paramètre pour l'emplacement source comme Z: \ Data Repository \ X et le conteneur For Each Loop fonctionne correctement à partir de SSDT / Visual Studio.

Maintenant, après le déploiement du package / projet SSIS dans le catalogue SSMS, lorsque je nourris Z: \ Data Repository \ X comme valeur de la variable d'environnement Emplacement source, et j'exécute le package manuellement à partir du catalogue, cela fonctionne bien.

Cependant, lorsque j'utilise SQL Server Agent pour le processus ci-dessus, j'obtiens l ' erreur suivante :

Pour chaque conteneur de boucle: Attention: l'énumérateur For Each File est vide. L'énumérateur For Each File n'a trouvé aucun fichier qui correspondait au modèle de fichier, ou le répertoire spécifié était vide.

Dois-je faire quelque chose dans le conteneur de boucles For Each ou le catalogue SSIS pour éliminer l'erreur ci-dessus lors de l'exécution du catalogue à l'aide de l'Agent SQL Server?

Faites-moi savoir.


0 commentaires

3 Réponses :


0
votes

J'ai 2 suggestions:

  1. Essayez d'accorder des autorisations de lecture / écriture au compte du service SQL Database Engine NT SERVICE \ MSSQL $ (où doit être remplacé par le nom de l'instance installée) :

  2. Essayez de mapper le lecteur réseau Z: \ dans SQL Server:


0 commentaires

1
votes

Sous Windows, les lecteurs mappés sont spécifiques à l'utilisateur. Vous devrez donc mapper le lecteur pour le compte exécutant le package. Utilisez plutôt un chemin UNC dans les deux cas, et non une lettre de lecteur.

Donc, quelque chose comme:

\\tordfs\Data Repository\Files

Le compte exécutant le package aura toujours besoin d'autorisations sur le partage, et les autorisations sur le dossier, mais ne nécessite pas de montage de lettre de lecteur.


1 commentaires

Merci David et Hadi; J'ai une livraison de production importante la semaine prochaine; enfin réparé!



0
votes

Merci beaucoup les gars. Je l'apprécie.

Je pense avoir résolu le problème:

Dans la variable d'environnement, vous ne pouvez pas avoir Z: \ Data Repository \ X

La variable doit avoir les valeurs telles que celle-ci:

\\ tordfs \ Data Repository \ Data Repository \ X

Alors que l'exécution manuelle à partir du catalogue SSMS Integration Services peut accepter Z: \ Data Repository \ X comme valeur d'une variable d'environnement,

l'agent SQL Server a besoin de \\ tordfs \ Data Repository \ Data Repository \ X

Si l'Agent SQL Server lors de la lecture à partir de l'environnement dans le catalogue lit Z: \ Data Repository \ X,

Je reçois le conteneur For Each Loop affiché ci-dessus!

Cela dit, j'utilise un proxy pour l'Agent SQL Server pour résoudre d'autres problèmes d'accès tels que le déplacement d'un fichier dans un dossier à l'aide de la tâche du système de fichiers.


2 commentaires

Bien joué! Mais puisque vous avez décidé d'écrire votre propre réponse, je pense que vous devriez voter pour les réponses des autres au lieu de dire Merci parce qu'elles sont toutes les deux correctes.


Dans la variable d'environnement, vous ne pouvez pas avoir Z: \ Data Repository \ X Ce n'est pas vrai . Vous devez ajouter une autorisation pour le compte de service SQL Server comme indiqué dans la réponse de Hadi. Ou vous devez utiliser le chemin UNC comme vous l'avez mentionné