Sql server 从Python将SSRS报告导出为PDF

Sql server 从Python将SSRS报告导出为PDF,sql-server,python-3.x,reporting-services,export-to-pdf,reportserver,Sql Server,Python 3.x,Reporting Services,Export To Pdf,Reportserver,我正在尝试从Python导出/打印/生成SSRS报告。看起来SSPYRS应该完全满足我的要求。然而,我遇到了一个错误,无法找到解决方法 import sspyrs try: username= "user" password = "pass" params_multi = {'param1': value1, 'param2': value2, 'param3': value3} myrpt = sspyrs.report("http://sqlserver/rep

我正在尝试从Python导出/打印/生成SSRS报告。看起来SSPYRS应该完全满足我的要求。然而,我遇到了一个错误,无法找到解决方法

import sspyrs
try:   
   username= "user"
   password = "pass"
   params_multi = {'param1': value1, 'param2': value2, 'param3': value3}
   myrpt = sspyrs.report("http://sqlserver/reportingserrver/reportsfolder/reportname", username, password, params_multi).download('PDF',fileloc)
except Exception as ex:
   template = "An exception of type {0} occurred. Arguments:\n{1!r}"
   message = template.format(type(ex).__name__, ex.args)
我得到以下错误:

报表服务器不允许使用可用的数据导出方法。更新服务器设置/版本以启用XML、Excel或CSV导出

当我从浏览器运行相同的报告时,一切都正常。我也可以从.net应用程序访问它,而不会出现任何问题。所以我怀疑这是一个许可问题

我检查了SQL Server上的reportserver.config文件,并且启用了PDF呈现。我不知道还能去哪里看


非常感谢您提供的任何帮助和指导。

因此我不得不使用NTLM身份验证使其在我的环境中为我工作。也许你可以使用和/或修改这个?我是SQL人员,不是python,但这里是:

import requests
from requests_ntlm import HttpNtlmAuth

#change username to your username
filename = 'C:\\Users\\username\\Desktop\\report.pdf'

#change username and password to your network login
username = "username"
password = "password"
#url needs to be the special url found by going to the ReportServer, the one with &rs:Command=Render
url = "http://reportservername/ReportServer%2fReportFolder%2fReportName&rs:Command=Render&rs:Format=PDF"

r = requests.get(url, auth=HttpNtlmAuth(username, password))

print(r.status_code)

if r.status_code == 200:
    with open(filename, 'wb') as out:
        for bits in r.iter_content():
            out.write(bits)

这篇文章帮助了我:

你的params_多重任务是否缺少一个报价?('param3)还是您刚才复制/粘贴不正确?@FembotDBA。只是打字错误。谢谢你指出这一点。我尝试了一下sspyrs模块,得到了相同的结果。我可能会给作者写封电子邮件或使用url和另一种python方法下载文件?@FembotDBA。谢谢你的努力。我在url导出方面运气不太好。我需要能够在特定位置放置PDF文件,但找不到该选项。您知道其他python方法来实现这一点吗?现在很好。非常感谢你花这么多时间来帮助我。