Wmi ManagedComputer SetServiceAccount给出“设置服务帐户失败”

时间:2016-01-13 10:35:57

标签: sql-server powershell configuration automation

我正在尝试自动执行SQL + SSRS服务器安装(MS SQL 2012 Express)的安装后配置 - 我认为它或多或少this。但是,这是我第一次进入Powershell,我从未配置过甚至使用过MS SQL。我的服务器是Windows 2008 R2虚拟机,我是管理员,SQL服务器是本地安装的(非集群)。我正在使用Powershell v2.0运行以下代码段(作为管理员):

Write-Output("- Setting service account ...")
Write-Output("  - Loading assembly ...")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") | out-null
Write-Output("  - Loading server ...")
$mc = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer "$hostname"
Write-Output("  - Loading service ...")
#$service = $mc.Services | Where {$_.Name -eq "MSSQL`$$sqlInstanceName"}
$service = $mc.Services | Where {$_.Name -eq "ReportServer`$$sqlInstanceName"}
Write-Output("  - Changing service account credentials ...")
$service.SetServiceAccount("$hostname\sa", "$sapwd")
Write-Output("  - Commit ...")
$service.Alter()
Write-Output("- OK.")

在“更改服务帐户凭据”和“提交”之间,我的代码失败并显示以下消息:

Exception calling "SetServiceAccount" with "2" argument(s):
"Set service account failed."

$sapwd是SQL Server安装期间给出的密码。我从未被要求提供相应的用户名,但我被告知有一个“SA”用户是隐含的。我在本地计算机上没有该用户名的Windows用户;我不确定在(新安装的)SQL服务器中定义了哪些用户。

我的目标相当于使用GUI将“服务帐户”设置为“使用内置帐户:网络服务”,代码段基于this代码。 This post并非完全不相关,但(a)没有回答,(b)我不使用聚类。

其他许多人都有这个问题,但似乎没有任何可靠的答案对我有用。我怎么能找到关于这个错误意味着什么的信息,以及如何解决它?

加成

我还需要更改“Web服务URL”和“报表管理器URL”;如果你有关于如何做到这一点的任何提示,你将节省我一些时间。

1 个答案:

答案 0 :(得分:1)

sa数据库用户(内置数据库管理员帐户),而不是 Windows 用户。要运行服务,您需要一个Windows用户帐户。通常是您为运行服务而创建的专用帐户(具有所需的权限/权限)或其中一个内置默认帐户,如NT AUTHORITY\Network ServiceNT AUTHORITY\Local Service

使用其中一个内置帐户时,将空字符串作为第二个参数传递,因为它们没有密码:

$service.SetServiceAccount('NT AUTHORITY\Network Service', '')

话虽如此,通常您应该在安装期间为数据库服务指定runas帐户,因此不需要在之后更改它。