0

現在、asp.netアプリケーションでRDLCレポートを呼び出しています。ここで、.rdlcが呼び出しており、データソースとレポートをPDFとして生成して渡すと、プロセス全体がボタンのクリックで開始され、レポートが生成されます。

このプロセスは自動化する必要があり、レポートは月曜日の朝に生成されるはずです。

SSISスクリプトタスクを使用でき、外部DLLを呼び出し、.rdlcファイルを呼び出してレポートを生成してからSSISパッケージをスケジュールできるという提案がいくつかありますか?

私はSSIS側での経験がありません。可能性がある場合は、あなたの提案とその方法が必要ですか?ありがとう!

4

2 に答える 2

0

SSRSサブスクリプションを使用してレポートを送信できます。本当にSSISにレポートを送信させたい場合。次のことができます。

  1. SSRSでレポートを作成する
  2. レポートをレポートサーバーに展開します
  3. SSISパッケージを作成する
  4. スクリプトタスクをパッケージにドラッグします。

次のコードスニペットを使用して、SSISを使用してSSRSレポートを送信できます。

レポートを保存して情報をレンダリングするには、いくつかのSSIS変数を作成する必要があります。

  1. RenderExtension ==> pdf
  2. RenderFileName==>書き込みたいファイルの名前
  3. RenderFormat ==> PDF
  4. RenderOutputPath==>ファイルを書き込む場所
  5. SSRSConnection==> http://localhost/ReportServer/reportexecution2005.asmx[レポートサービスの場所]
  6. SSRSFolderName==>デプロイしたレポートのフォルダー名
  7. 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;
        }
于 2012-11-19T19:20:34.937 に答える
0

SSRSを使用して、実行するレポートをスケジュールします。ASP.netやSSISは必要ありません。SSRSにはスケジューリングが組み込まれています。

于 2012-11-19T02:19:36.810 に答える