我正在尝试自动执行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”;如果你有关于如何做到这一点的任何提示,你将节省我一些时间。
答案 0 :(得分:1)
sa
是数据库用户(内置数据库管理员帐户),而不是 Windows 用户。要运行服务,您需要一个Windows用户帐户。通常是您为运行服务而创建的专用帐户(具有所需的权限/权限)或其中一个内置默认帐户,如NT AUTHORITY\Network Service
或NT AUTHORITY\Local Service
。
使用其中一个内置帐户时,将空字符串作为第二个参数传递,因为它们没有密码:
$service.SetServiceAccount('NT AUTHORITY\Network Service', '')
话虽如此,通常您应该在安装期间为数据库服务指定runas帐户,因此不需要在之后更改它。