目前我在asp.net应用程序中调用RDLC报告,其中.rdlc正在调用,并且我们将生成的数据源和报告传递为PDF,整个过程在按钮单击时启动并生成报告。需要通过SSIS脚本任务自动完成RDLC报告?
现在这个过程需要自动化和报告应该在周一早上产生。
有一些建议我们可以使用SSIS脚本任务,我们可以调用外部DLL,也可以调用.rdlc文件来生成报告,然后我们可以安排SSIS包?
我从来没有在SSIS方面的经验,需要你的建议,以及如何做到这一点,如果有可能性?谢谢!
目前我在asp.net应用程序中调用RDLC报告,其中.rdlc正在调用,并且我们将生成的数据源和报告传递为PDF,整个过程在按钮单击时启动并生成报告。需要通过SSIS脚本任务自动完成RDLC报告?
现在这个过程需要自动化和报告应该在周一早上产生。
有一些建议我们可以使用SSIS脚本任务,我们可以调用外部DLL,也可以调用.rdlc文件来生成报告,然后我们可以安排SSIS包?
我从来没有在SSIS方面的经验,需要你的建议,以及如何做到这一点,如果有可能性?谢谢!
使用SSRS安排报告运行。无需使用ASP.net或SSIS,SSRS内置调度功能。
您可以使用SSRS订阅发送报告。如果你真的想要SSIS发送报告。你可以做以下事情。
您可以使用以下代码片段使用SSIS发送SSRS报告。
您应该创建一些SSIS变量来存储报告和呈现信息。
http://localhost/ReportServer/reportexecution2005.asmx
[的 位置报告服务]在下面的代码片段中。
public void Main()
{
var rExtension = Dts.Variables["RenderExtension"].Value.ToString();
var rFileName = Dts.Variables["RenderFileName"].Value.ToString();
var rFormat = Dts.Variables["RenderFormat"].Value.ToString();
var rOutputPath = Dts.Variables["RenderOutputPath"].Value.ToString();
var ssrsConnection = Dts.Variables["SSRSConnection"].Value.ToString();
var ssrsFolderName = Dts.Variables["SSRSFolderName"].Value.ToString();
var ssrsReportName = Dts.Variables["SSRSReportName"].Value.ToString();
ReportExecutionService rs=new ReportExecutionService();
Byte[] results;
string encoding = string.Empty;
string mimetype = string.Empty;
string extension = string.Empty;
Warning[] warnings = null;
string[] streamId = null;
string deviceInfo = null;
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
rs.Url = ssrsConnection;
try
{
var reportpath = string.Format("/{0}/{1}", ssrsFolderName, ssrsReportName);
rs.LoadReport(reportpath, null);
//Adding Parameters
//Commenting the following line Till we test the functionality
ParameterValue[] paramValues = new ParameterValue[4];
ParameterValue paramValue = new ParameterValue();
paramValue.Name = "ReportParamName";
paramValue.Value = "X,Y,Z";
paramValues[0] = paramValue;
rs.SetExecutionParameters(paramValues, "en-US");
results = rs.Render(rFormat, deviceInfo, out extension, out mimetype, out encoding, out warnings, out streamId);
var filewithdatetime = string.Format("{0}_{1}",rFileName,DateTime.Now.ToString("yyyy_MM_dd_hhmmss"));
string path = string.Format(@"{0}\{1}.{2}", rOutputPath, filewithdatetime, rExtension);
MessageBox.Show(path);
using (FileStream stream = File.OpenWrite(path))
{
stream.Write(results, 0, results.Length);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace);
}
Dts.TaskResult = (int)ScriptResults.Success;
}