我们正在使用SSRS生成发布到内部托管的网络服务器的数据库报告。然后,我编写了一个PowerShell脚本,定期运行并以PDF格式下载报告。
我已经让它以管理员身份运行了。但出于安全考虑,自动化任务必须作为通用域服务帐户运行。
我用我的帐户下载PDF的代码是:
$this->Time->timeAgoInWords
当我将此代码作为服务帐户运行时,出现500内部服务器错误。我尝试用以下代码替换第二行代码:
$webClient = New-Object System.Net.WebClient
$webClient.UseDefaultCredentials = $TRUE
$webClient.DownloadFile($ssrsURL, $filePath)
当我尝试这个时,我收到401 Unauthorized错误。即使我在代码中输入的用户名/密码是我自己的,当我通过IE登录到网络服务器时也能正常工作。
答案可能在我的代码,域/本地安全策略或SSRS安全设置中......
可能正确方向的一些问题是:
提前感谢任何想法。
答案 0 :(得分:0)
最后想出来......它与使用SSRS进行身份验证无关。我的第一个代码段工作正常。
问题在于底层数据库的权限。我们有五个报告,我突然发现PowerShell脚本可以使用服务帐户下载5个报告中的4个。从来没有注意到因为我总是在同一份报告上测试...
访问SSRS日志文件以查看最后一个文件无法正常工作的原因 - 服务帐户无法访问特定报告从中提取数据的数据库。因此500错误而不是401错误。