Exécution d'un package SSIS appartenant à un utilisateur de domaine à partir de SQL Server exécuté sur un compte de service local

10

Je souhaite exécuter un package SSIS contenant des tâches de transfert d'objets SQL Server. Les serveurs impliqués sont sur le même domaine, mais les services SQL Server s'exécutent sur des comptes de service locaux. L'environnement ressemble donc à ceci:

Domaine

Serveur 1

  • SQL Server exécuté sur un compte local
  • Sur le système de fichiers: package SSIS
  • Dans l'Agent SQL Server: un travail

Serveur 2

  • SQL Server exécuté sur un compte local

Pour pouvoir me connecter aux deux serveurs, j'ai créé un compte de domaine à utiliser comme compte de service. Lorsque j'utilise ce compte de domaine pour me connecter au serveur 1, puis exécuter le package à partir du système de fichiers, chaque étape réussit. Cependant, lorsque j'essaie d'ajouter le travail à SQL Server, je rencontre l'un des problèmes suivants:

Situation 1. Propriétaire de l'emploi: compte local; exécutez l'étape SSIS en tant que proxy pour le compte de domaine . Lorsque je définis le propriétaire du travail sur un compte local, mais que j'exécute le travail en tant que proxy sur le compte de domaine, le travail lui-même s'exécute avec succès, mais le package renvoie des erreurs comme

L'exécution a échoué avec l'erreur suivante: "Le répertoire 'LocalApplicationData' n'existe pas.".

Cette erreur peut être corrigée en créant une connexion avec des droits d'administrateur pour l'utilisateur de domaine sur le serveur 1, mais ce n'est évidemment pas une solution souhaitable. L'ajout du compte à l'un des groupes d'agent SQL Server / DTS ne fonctionne pas non plus.

Situation 2. Propriétaire de l'emploi: compte de domaine; exécutez l'étape SSIS en tant que proxy pour le compte de domaine . Lorsque je définis à la fois le propriétaire du travail et le «exécuter en tant qu'utilisateur» pour l'étape sur le compte de domaine, le travail ne démarre pas du tout, avec l'erreur suivante:

Impossible de déterminer si le propriétaire (domaine \ utilisateur de domaine) du travail Job namea accès au serveur (raison: impossible d'obtenir des informations sur le groupe / utilisateur Windows NT 'Utilisateur de domaine \ utilisateur', code d'erreur 0x5. [SQLSTATE 42000] (erreur 15404)) .

Je crois que la dernière erreur est due au fait que SQL Server s'exécute sur un compte local et ne peut donc pas déterminer les droits des comptes de domaine.

Quelle est la bonne façon de faire fonctionner le travail? La situation 2 me semble plus propre, mais semble impossible car SQL Server s'exécute sur un compte local. La situation 1 fonctionnerait également, mais donner des droits administratifs à un utilisateur de domaine sur mon serveur SQL ne se produira pas.


MISE À JOUR:

@ JonSeigel et @ Mr.Brownstone:

Il semble plausible que ce problème soit dû au manque d'autorisations. Cependant, l'erreur concerne l'inexistence de «LocalApplicationData» - l'un des dossiers qui est généré pour chaque compte. Je me suis déjà connecté au serveur avec les informations d'identification sous lesquelles le package s'exécute (créant ainsi un répertoire de profil) et j'ai essayé plusieurs combinaisons d'autorisations pour le répertoire de profil. Même lorsque j'accorde manuellement presque toutes les autorisations sur ce répertoire spécifique, j'obtiens l'erreur mentionnée ci-dessus.

Tout en faisant des recherches supplémentaires, je suis tombé sur un fil de discussion sur http://www.sqlservercentral.com/Forums/Topic391332-148-1.aspx#bm391441 qui est assez similaire - sans solution non plus.

vstrien
la source
Y a-t-il une raison pour laquelle vous n'utilisez pas de compte de domaine pour les services SQL?
Eric Higgins
Oui, mais je ne sais pas pour quelle raison (je suppose que quelque chose avec le cycle DTAP et le domaine n'est pas partout disponible). Quoi qu'il en soit, c'est un environnement donné que je ne suis pas autorisé à modifier.
vstrien
La situation # 1 semble être la réponse. Je pense que le message d'erreur que vous obtenez provient du package. En d'autres termes, le package est en cours d'exécution, mais une tâche qu'il contient nécessite plus d'autorisations que le compte de service n'a été accordé. Vous n'aurez peut-être pas à accorder des autorisations de niveau administrateur au compte pour le faire réussir (accordez des autorisations granulaires à la place ou modifiez le processus pour ne pas avoir besoin des autorisations).
Jon Seigel
Pouvez-vous ajouter des connexions SQL (authentification SQL) au serveur SQL distant (serveur 2)? Si vous disposez de cette option, vous pouvez utiliser la connexion SQL dans la connexion SSIS utilisée pour la destination. Cela signifie que vous devrez utiliser un mot de passe pour crypter le package, mais cela résoudra votre problème.
Roi Gavish
@Justicator: Peut-être, en dernier recours. Mais chaque fois que les connexions au domaine sont possibles, je préfère ne pas utiliser l'authentification SQL.
vstrien

Réponses:

5

Mon opinion personnelle est que l'option # 1 est la voie à suivre. Mais je ne vois pas la nécessité d'accorder au compte de domaine l'accès administrateur local. Il me semble qu'il nécessite l'accès à certains dossiers et fichiers et vous pouvez donc accorder à l'utilisateur du domaine l'accès uniquement aux ressources dont il a besoin pour exécuter le package avec succès. Cela peut être fait via la boîte de dialogue des propriétés de fichier / dossier et sélectionnez l'onglet de sécurité - il ne devrait pas être nécessaire de le définir pour chaque fichier et dossier car vous pouvez définir les autorisations du répertoire parent et les définir pour remplacer les propriétés enfant.

J'espère que ceci vous aide.

Mr.Brownstone
la source