将MS SQL Reporting服务帐户更改为内置的“网络服务”

时间:2016-01-13 14:57:20

标签: sql-server powershell configuration automation

当我刚刚安装了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调用的东西)切换此选项(以及指定给定的帐户,除非我可以依赖“网络服务”作为默认值)?

MS SQL Reporting Services GUI

2 个答案:

答案 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