SSRSサブスクリプションを使用してレポートを送信できます。本当にSSISにレポートを送信させたい場合。次のことができます。
- SSRSでレポートを作成する
- レポートをレポートサーバーに展開します
- SSISパッケージを作成する
- スクリプトタスクをパッケージにドラッグします。
次のコードスニペットを使用して、SSISを使用してSSRSレポートを送信できます。
レポートを保存して情報をレンダリングするには、いくつかのSSIS変数を作成する必要があります。
- RenderExtension ==> pdf
- RenderFileName==>書き込みたいファイルの名前
- RenderFormat ==> PDF
- RenderOutputPath==>ファイルを書き込む場所
- SSRSConnection==>
http://localhost/ReportServer/reportexecution2005.asmx
[レポートサービスの場所]
- SSRSFolderName==>デプロイしたレポートのフォルダー名
- SSRSReportName==>レポートの名前
次のスニペット。
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;
}