Comment résoudre les erreurs d'accès refusé avec stsadm -o retractsolution

8

Nous avons une batterie de serveurs 2 exécutant MOSS 2007 SP1. Je suis membre du groupe Administrateurs sur les deux serveurs.

Je suis également membre du groupe Administrateurs de fermes.

J'avais besoin de mettre à niveau quelques solutions, donc naturellement j'ai commencé avec la commande stsadm retractsolution sur les anciennes solutions. Quelle que soit la solution que j'essaie d'exécuter la commande, je reviens «Accès refusé».

Le fichier journal ULS me donne heureusement un peu plus d'informations:

System.Data.SqlClient.SqlException: impossible d'ouvrir la base de données "SharePoint_AdminContent" demandée par la connexion. La connexion a échoué. La connexion a échoué pour l'utilisateur «*** My Domain Login ***».

Ce qui semble étrange ici, c'est le fait que SharePoint tente de se connecter avec mon compte à l'aide de l'authentification intégrée de Windows au lieu de se connecter avec le compte de service de batterie configuré. Bien sûr, mon compte n'a pas accès à la base de données de contenu Admin.

La question est donc la suivante: mon compte doit-il être autorisé à accéder à la base de données de contenu d'administration afin d'effectuer des tâches d'administration? J'espère bien que non, alors est-ce que quelque chose d'autre est terriblement mal?

Trent
la source

Réponses:

11

La réponse courte est "oui" pour la plupart des activités que vous effectuerez via STSADM sur des bases de données SQL.

Pour l'écrasante majorité des commandes STSADM qui s'exécutent directement sur l'API SharePoint (plutôt que de planifier des tâches pour exécuter une action), le contexte de sécurité dans lequel les commandes sont exécutées est le vôtre - l'utilisateur connecté. Comme vous l'avez vu dans l'exemple que vous avez cité, le contexte de votre compte utilisateur est celui qui sera utilisé pour la rétractation. Si vous ne disposez pas des droits appropriés dans SQL pour effectuer l'opération, elle échouera (comme vous l'avez vu).

Cela contraste avec la plupart des activités que vous effectuerez via l'interface utilisateur (c'est-à-dire, l'administrateur central). Dans l'exemple que vous avez cité, le retrait de la solution via Central Admin entraînerait l'exécution de la commande dans le contexte du compte de service de la batterie de serveurs, car ce compte est l'identité du pool d'applications pour le site Central Admin. Résultat: la rétraction réussirait même si vous (personnellement) n'avez pas d'autorisations sur la base de données associée.

Si votre environnement est configuré de manière à ce que votre compte ne dispose pas d'un accès administrateur aux bases de données de la batterie de serveurs SharePoint, je recommanderais d'effectuer autant d'activités que possible via l'interface utilisateur pour éviter le type de problèmes de contexte de sécurité que vous rencontrez. . Vous constaterez que vous pouvez faire la plupart de ce que vous devez faire de cette façon. Une exception notable qui vient à l'esprit, cependant, est l'ajout d'une solution (STSADM -o addolution) au magasin de solutions de la batterie de serveurs - aucun équivalent d'interface utilisateur de la commande STSADM n'existe.

Alternativement, vous pouvez faire quelque chose de similaire à ce que MadlyAlive a suggéré (c'est-à-dire, se connecter avec le compte de service de ferme) ... bien que l'accès administrateur local pour le compte de service de ferme ne soit ni requis ni recommandé par Microsoft. Vous pouvez également faire accorder à votre compte l'ensemble minimal d'autorisations à l'intérieur de SQL Server nécessaire pour effectuer vos opérations.

Pour plus de discussion, consultez l'article de la base de connaissances de Microsoft à l' adresse http://support.microsoft.com/kb/896148 .

Récapitulation de la règle générale: STSADM utilise le contexte de votre compte, l'administrateur central utilise le contexte du compte de service de la batterie de serveurs.

J'espère que ça aide!

Sean P. McDonough
la source
merci pour la bonne perspicacité et l'information. Je n'ai jamais beaucoup pensé au fait que stsadm s'exécute dans le contexte de l'utilisateur.
Aaron Weiker
J'ai également le même problème lorsque j'essaie de retirer la solution dans l'interface d'administration centrale. Mais c'est vraiment une bonne information que vous avez partagée. Je vais maintenant commencer le long processus bureaucratique consistant à demander l'accès approprié au serveur SQL.
Trent
Je m'attendrais quand même à ce que mon compte obtienne toutes ces autorisations lorsqu'il est ajouté au groupe "Administrateurs de batterie".
vitule
L'ajout d'un compte au groupe «Administrateurs de batterie» dans SharePoint Central Admin n'a absolument aucun effet sur les droits de ce compte dans SQL Server. Devenir un administrateur de batterie de serveurs vous donne le droit (au sein de l'administrateur central) d'initier des actions qui sont ensuite prises en votre nom par le compte de service de la batterie / du minuteur via la délégation ... mais cela ne modifie aucune autorisation sur les bases de données pour le compte d'utilisateur dans SQL . Devenir administrateur de batterie de serveurs est uniquement une modification des autorisations SharePoint - pas SQL Server.
Sean P. McDonough
0

Cela peut éviter le problème principal, mais lorsque vous essayez d'exécuter une commande stsadm similaire

stsadm -o preupgradecheck

Je recevais également un accès refusé. Mais l'exécution de l'invite de commandes en tant qu'administrateur m'a permis de l'exécuter.

Jeff Dalley
la source