如何使用stsadm -o来解决访问被拒绝的错误


8

我们有一个运行MOSS 2007 SP1的2服务器场。我是两台服务器上Administrators组的成员。

我也是“农场管理员”组的成员。

我需要升级一些解决方案,因此自然而然地,我从旧解决方案上的stsadm restartsolution命令开始。无论尝试使用哪种解决方案运行命令,都将返回“访问被拒绝”。

幸运的是,ULS日志文件为我提供了更多信息:

System.Data.SqlClient.SqlException:无法打开登录请求的数据库“ SharePoint_AdminContent”。登录失败。用户“ ***我的域登录***”的登录失败。

在这里看起来很奇怪的事实是,SharePoint尝试使用Windows集成身份验证而不是配置的服务器场服务帐户与MY帐户进行连接。当然,我的帐户无权访问“管理内容”数据库。

因此问题是:是否需要授予我的帐户对Admin Content数据库的权限才能执行管理任务?我当然希望不会,那么还有其他严重错误吗?

Answers:


11

对于您将通过STSADM针对SQL数据库执行的大多数活动,简短的答案是“是”。

对于直接针对SharePoint API执行的绝大多数STSADM命令(而不是计划执行任务的任务),执行命令的安全上下文是您的用户-登录用户。正如您在引用的示例中所看到的那样,您的用户帐户上下文就是用于撤消的上下文。如果您在SQL中没有适当的权限来执行该操作,它将失败(如您所见)。

这与您将通过UI进行的大多数活动(即Central Admin)形成对比。在您引用的示例中,通过Central Admin撤消解决方案将导致命令在场服务帐户的上下文中执行,因为该帐户是Central Admin站点的应用程序池标识。结果:即使您(个人)没有关联数据库的权限,撤回仍将成功。

如果您的环境被设置为您的帐户没有对SharePoint场中数据库的管理员级别的访问权限,我建议您通过UI进行尽可能多的活动,以避免遇到的安全上下文问题类型。您会发现您可以执行该方法所需的大部分操作。不过,我想到的一个值得注意的例外是向服务器场解决方案存储中添加了解决方案(STSADM -o addsolution)-不存在与STSADM命令相对应的UI。

或者,您可以执行类似于MadlyAlive建议的操作(即,使用场服务帐户登录)...尽管Microsoft既不需要也不建议对场服务帐户进行本地管理员访问。您还可以为您的帐户授予执行操作所需的SQL Server内部最小权限集。

有关更多讨论,请参见位于http://support.microsoft.com/kb/896148的 Microsoft知识库文章。

经验总结:STSADM使用您的帐户上下文,Central Admin使用场服务帐户上下文。

我希望这有帮助!


感谢您的宝贵见解和信息。无需过多考虑stsadm在用户上下文中运行这一事实。
亚伦·威克

当我尝试在Central Admin UI中撤回解决方案时,我也遇到同样的问题。但这是您共享的非常好的信息。现在,我将开始冗长的官僚程序,以请求对SQL Server的适当访问。
特伦特(Trent)

我仍然希望我的帐户在添加到“ Farm Administrators”组中时获得所有这些权限。
vitule

在SharePoint Central Admin中将帐户添加到“ Farm Administrators”组中,绝对不会影响该帐户在SQL Server中的权限。成为服务器场管理员后,您将具有权限(在管理中心内)启动由农场/计时器服务帐户通过委派代表您执行的操作...,但不会更改SQL中用户帐户对数据库的任何权限。成为服务器场管理员仅是SharePoint权限更改,而不是SQL Server。
肖恩·麦克唐纳

0

这也许可以避免核心问题,但是在尝试运行类似的stsadm命令时

stsadm -o preupgradecheck

我也收到拒绝访问。但是以管理员身份运行命令提示符使我能够运行它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.