あなたのパッケージはこのようなものだと思います
変数を作成する
変数を使用すると、初心者と専門家を区別するのに役立ちます。これは、パッケージにブレークポイントを設定して変数を検査できるという単純な事実のためです。タスクの式の検査についても同じことは言えません。
ご覧のとおり、いくつかの変数が作成されています。
- foreach ループから入力された CurrentID、String
- foreach ループから入力された受信者、文字列
- FolderInput、String、ファイルが存在するベース フォルダー
- ResultSet、オブジェクト、SQL 実行タスクで入力され、Foreach ループで細断処理される
- CurrentFile、String は、ファイルへのフル パスを定義します。これは
@[User::FolderInput] + "\\Happy " + (DT_WSTR, 3) @[User::CurrentID]+ ".pdf"
Foreach ループが列挙されると、CurrentID と Recipient の値が変化します。CurrentID が変更されたおかげで、私のマッピングは各人に対して更新されるため、メール送信タスクが起動すると、正しいファイルが送信されます。
対処されていません - 動的なファイル名とサブフォルダー。CurrentFile の式は、ファイルが存在することを前提としておりHappy NNN.pdf
、NNN が CurrentID 値である場合に常に名前が付けられます。、などを使用できる場合はHap 123.pdf
、おそらくスクリプト タスクで、ファイル名の値を取得する作業を行う必要があります。それは別のSOの質問です。Joyous 123.pdf
Subfolder\Happy 123.pdf
自分を表現
メール送信タスクの 3 番目のタブには、このタスクの式が表示されます。これは、SSIS ツールキットのすべてのタスクで最も強力なオプションです。ここでは、受信者が変数@[User::Recipient]
であり、送信するファイルが[@User::CurrentFile]
1 つ、ここで注意すべきかなり重要なこと。ファイルが存在しない場合、メール送信タスクは失敗します。