当我刚刚安装了MS SQL Server 2012 Express时,Reporting Services配置管理器的“服务帐户”页面表明我不使用“内置帐户”而是“另一个”帐户“(并且已使用的帐户为NT Service\ReportServer$<MyServerName>
)。我的安装脚本声明我需要将其更改为下图所示的情况。
如果我手动打开Reporting Services配置管理器GUI并选择“内置”选项,然后关闭并重新打开它,则仍会设置该选项。但是,如果我使用Powershell来调用SetServiceAccount()
(来自Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer.Service
)来设置特定帐户,则仍然会在GUI中设置“使用其他帐户”选项。这就是我想要避免。
挑战:我如何以编程方式(通过Powershell或我可以从PS调用的东西)切换此选项(以及指定给定的帐户,除非我可以依赖“网络服务”作为默认值)?
答案 0 :(得分:1)
事实证明,实际上有一些非常简单的代码可以做到这一点。我的同事发现了它,我不知道这个神秘的魔法。
以下是代码:
abline()
全部完成。很简单。我真的不想想我生命中浪费了多少心跳。
答案 1 :(得分:0)
我重复使用接受的答案来设置服务帐户(使用SQL 2016):
[212 12 444 [11 2 12]]
使用服务帐户,您可以使用NTML(默认配置):https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/cc281253(v=sql.105)
然后SetSPN用于报表服务器。
例如:
$ns = "root\Microsoft\SqlServer\ReportServer\RS_SSRS\v13\Admin"
$RSObject = Get-WmiObject -class "MSReportServer_ConfigurationSetting" -namespace "$ns"
# Set service account
$serviceAccount = "domain\SRV-ACCOUNT"
$servicePW = "password"
$useBuiltInServiceAccount = $false
$RSObject.SetWindowsServiceIdentity($useBuiltInServiceAccount, $serviceAccount, $servicePW) | out-null
$HTTPport = 80
$RSObject.RemoveURL("ReportServerWebService", "http://+:$HTTPport", 1033) | out-null
$RSObject.RemoveURL("ReportManager", "http://+:$HTTPport", 1033) | out-null
$RSObject.SetVirtualDirectory("ReportServerWebService", "ReportServer", 1033) | out-null
$RSObject.SetVirtualDirectory("ReportManager", "Reports", 1033) | out-null
$RSObject.ReserveURL("ReportServerWebService", "http://+:$HTTPport", 1033) | out-null
$RSObject.ReserveURL("ReportManager", "http://+:$HTTPport", 1033) | out-null
$serviceName = $RSObject.ServiceName
Restart-Service -Name $serviceName -Force