簡體   English   中英

如何使用 SQL Server Reporting Services URL Access 將呈現的 PDF 報告作為 varbinary 保存到表中

[英]How to use SQL Server Reporting Services URL Access to save rendered PDF-Reports as varbinary into Table

我正在嘗試將來自報表服務器的呈現的 pdf 報告作為 varbinary 存儲回原始數據庫的表中。 我目前的方法是在外部 python 腳本中使用 URL-Access 來獲取呈現的報告,然后將它們保存到相應的表中。 以下 URL 在瀏覽器中按預期工作: http://localhost/reportserver?/ReportingServicesTest/Report_Test&rs:Format=PDF

但是,當我嘗試在外部 python 腳本中訪問該 URL 時,我收到了 401 錯誤。 所以我然后嘗試使用 requests_ntlm 庫來傳遞用戶名和密碼,但不知何故它仍然不起作用。

import requests
from requests_ntlm import HttpNtlmAuth

url = 'http://localhost/reportserver?/ReportingServicesTest/Report_Test&rs:Format=PDF'
session = requests.Session()
session.auth = HttpNtlmAuth('Domain\\Username','password')
response = session.get(url,stream=True)
open('C:/Path/Report_Test.pdf', 'wb').write(response.content)

我的方法原則上是正確的還是有更好的方法來完成同樣的事情? 我是 SQL Server Reporting Services 的新手,所以我願意接受您的建議並提前感謝您的幫助。

恕我直言,如果您出於安全保存或審計目的需要歷史數據,我強烈建議將數據保存在數據庫中。 使用暫存環境向報告數據添加時間戳,以便快照更有意義。 通過這種方式,您可以稍后使用 SSRS 門戶來過濾特定的歷史版本(參數化),而不必構建定制的 PDF 查看器。 它還可以節省一些數據庫存儲空間。 作為替代方案,您可以在 SSRS 中創建訂閱,將 PDF 發送到文件共享。 然后為該目錄配置一個偵聽器以獲取您的元信息並將該引用存儲在數據庫表中。 不用說,我不太喜歡將文件存儲在數據庫中,因為在大多數情況下,文件存儲比數據庫存儲便宜。

要解決您的身份驗證問題,您可能需要檢查 Web 服務器上的 rsreportserver.config 文件,因為您當前的代碼表明您的本地主機不知道任何域。 在任何情況下,您都可以嘗試更改<Authentication/>部分,使其看起來像這樣:

  <Authentication>
    <AuthenticationTypes>
      <RSWindowsBasic>
        <LogonMethod>3</LogonMethod>
        <Realm></Realm>
        <DefaultDomain>putyourfullyqualifieddomainnamehere</DefaultDomain>
      </RSWindowsBasic>
    </AuthenticationTypes>
    <RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
    <RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
    <EnableAuthPersistence>true</EnableAuthPersistence>
  </Authentication>

如果您的 Web 服務器位於代理或防火牆之后,這也將起作用。

重要提示:DefaultDomain 的內容應該是 FQDN,例如 contoso.microsoft.com 或 myprimarydomain.lan

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM