2015-04-01 6 views
0

有沒有人使用的從SSRS Web服務ReportExecution2005渲染方法?SSRS web服務呈現比較方法需要從代碼再手動打查看報告從URL

我注意到,從代碼生成報告比使用URL手動生成報告的時間要長。有什麼我可以配置/設置?

這是我使用的代碼:

的代碼工作它只是表現爲明顯慢了一些報道它採取永遠相比時,它的手動運行只需要< 5秒。

 public byte[] GetSSRSInvoice(string invoiceNumber) 
     { 
      byte[] reportBytes = null; 
      using (var webServiceProxy = new SSRSWebReference.ReportExecutionService()) 

      if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings.Get("SSRSReportPath")) && !String.IsNullOrEmpty(ConfigurationManager.AppSettings.Get("SSRSUserDomain")) && !String.IsNullOrEmpty(ConfigurationManager.AppSettings.Get("SSRSUserName")) && !String.IsNullOrEmpty(ConfigurationManager.AppSettings.Get("SSRSUserPassword"))) 
      { 
       string sUserName = ConfigurationManager.AppSettings.Get("SSRSUserName"); 
       string sUserDomain = ConfigurationManager.AppSettings.Get("SSRSUserDomain"); 
       string sUserPassword = ConfigurationManager.AppSettings.Get("SSRSUserPassword"); 
       string reportName = ConfigurationManager.AppSettings.Get("SSRSReportPath"); 
       webServiceProxy.Credentials = new System.Net.NetworkCredential(sUserName, sUserPassword, sUserDomain); 

       // Init Report to execute 
       ExecutionInfo executionInfo = webServiceProxy.LoadReport(reportName, null); 

       ParameterValue[] parameters = new ParameterValue[3]; 
       parameters[0] = new ParameterValue(); 
       parameters[0].Name = "GENERIC"; 
       parameters[0].Value = invoiceNumber; 
       parameters[1] = new ParameterValue(); 
       parameters[1].Name = "TYPE"; 
       parameters[1].Value = "1"; 
       parameters[2] = new ParameterValue(); 
       parameters[2].Name = "PARAMTYPE"; 
       parameters[2].Value = "1"; 

       // Attach Report Parameters 
       webServiceProxy.SetExecutionParameters(parameters, null); 
       string extension, mimeType, encoding; 
       Warning[] warnings; 
       string[] streamIds; 

       // Render 
       reportBytes = webServiceProxy.Render(ExportFormat.PDF.ToString(), null, out extension, out mimeType, out encoding, out warnings, out streamIds); 

      } 
      return reportBytes; 
     } 

謝謝!

+0

這正是我如何做到的,沒有任何性能問題。 [這個問題](http://stackoverflow.com/questions/13201639/ssrs-report-very-slow-in-prod-but-sql-query-runs-fast)是類似的,並在答案中有很好的鏈接幫你。 – 2015-04-01 05:47:44

+0

謝謝@ChrisLätta – lizeth 2017-07-26 05:04:25

回答

0

當您從URL中查看報告以查看目的時,它會以RPL渲染格式執行。在此步驟中,您的報告需要時間 1.數據提取 2.並呈現

因此總共花費的時間是(數據獲取時間+渲染時間)。現在您將相同的報告導出爲其他格式(如PDF/XLS等),那麼總時間將保持不變(RPL渲染期間的數據獲取時間+ RPL渲染期間的渲染時間+選定導出格式/渲染的渲染時間)。請注意,取決於選定的導出格式,渲染時間會有所不同。

現在,如果我們使用ReportExecution2005談論您的代碼,那麼您正在將報告導出爲PDF格式。在這種情況下,總時間將爲(數據獲取時間+渲染/導出到PDF時間+ C#代碼執行時間)。 基於此,您可以比較同一報表在兩個不同呈現之間的公平時間。

相關問題