- PR -

SQL Server2005 SSISのスクリプトタスクについて

1
投稿者投稿内容
アクセラ
会議室デビュー日: 2006/09/13
投稿数: 2
投稿日時: 2006-09-13 03:55
こんばんは。よく参考にさせてもらっています。
過去ログも検索しましたが出ていないようなので
件名のとおりSSISにてスクリプトタスクを使用した際の質問をさせてください。

SQL Server2005 SPにてSSISを使用し、その中でスクリプトタスクを作りました。
以下、前提とサンプルスクリプトです

・パッケージ全体をスコープとした変数を用意(5種すべてstring型)
・事前にInputRoot,OutputRoot,Pathにはそれぞれパッケージ実行前に値を設定済み
・スクリプト タスクエディタで下記を設定
[EntryPoint]Script Main
[Read Only Variables(読取専用変数)] InputRoot,OutputRoot,Path
[ReadWrite Variables(読み書き用変数)] InputFilePath,OutputFilePath

------コード始め---------
Public Class ScriptMain

Public Sub Main()
 Dim Path As String
 Dim OutRoot As String
 Dim InRoot As String
 Dim InputFilePath As String
 Dim OutputFilePath As String

 'dts変数から値をセット
 InRoot = Dts.Variables("InputRoot").Value.ToString
 OutRoot = Dts.Variables("OutputRoot").Value.ToString
 Path = Dts.Variables("Path").Value.ToString
 '上記は問題なくセットされる

 'パス生成
 InputFilePath = InRoot + Path
 OutputFilePath = OutRoot + Path

 '上記生成したパスをDts変数にセット
 Dts.Variables("InputFilePath").Value = InputFilePath
 Dts.Variables("OutputFilePath").Value = OutputFilePath
'上記2行の変数への値が全くセットされません。

 Dts.TaskResult = Dts.Results.Success
End Sub

End Class
------コード終わり---------

上記をデバッグ実行したところ、
読み取り専用パッケージ変数からはToStringを使用し問題なく変数の値を持ってこれるのですが、いざ読み書き用パッケージ変数に値を入れたくても、値をセットすることができません。
(タスク自体は緑色で正常終了します)

変数の確認方法としてはデバッグ終了時にパッケージ上で変数を表示させて確認していますが、値はなにもセットされていない状態です。
つまり、パッケージ変数の値を「読めるけど書けない」状態です。

スクリプトタスクエディタ上での事前設定も問題ないと思っているのですが、
どなたかスクリプトタスクでのパッケージ変数への値のセット方法をご存知の方がいらっしゃいましたら
ご助言いただけると幸いです。
また、当方が何か勘違いをしているのであればあわせてご指摘いただけないでしょうか。
SSISに関しては情報がまだ乏しいようで今回書き込みさせていただきました。
よろしくお願いいたします。
TLC
大ベテラン
会議室デビュー日: 2005/05/31
投稿数: 152
お住まい・勤務地: 東京都
投稿日時: 2006-09-13 10:39
引用:

アクセラさんの書き込み (2006-09-13 03:55) より:

変数の確認方法としてはデバッグ終了時にパッケージ上で変数を表示させて確認していますが、値はなにもセットされていない状態です。
つまり、パッケージ変数の値を「読めるけど書けない」状態です。




お疲れ様です。
TimberLandChapel です。

一見して,設定は正しいように見受けられます。
また,自分の環境では再現できません。

「デバッグ終了時にパッケージ上で変数を表示」をもう少し詳しく示していただけますか?

例えば,
スクリプトタスクの次の優先順位制約で,
スクリプトタスクを作成して,問題の変数を読み取ってメッセージボックスなどで表示しても値が設定されていませんか?

----------
TimberLandChapel
Micorosoft MVP for Windows Server System - SQL Server(Jul 2005 - Jun 2007)
http://blogs.timberlandchapel.com/blogs/timberlandchapel/
アクセラ
会議室デビュー日: 2006/09/13
投稿数: 2
投稿日時: 2006-09-13 14:45
ご返信ありがとうございます。
結論からいいますと、変数に値をセット出来ていることが確認できました。
当方の変数の確認方法がまずかったようです。

デバッグ中に制御フローのデザイナ画面にて
右クリック→「変数」で変数の値を確認していました。
このウィンドウでは変数に値をセットしても変数の状態遷移が分かる訳ではないようですね。

TLCさんがおっしゃるように、このタスクの下にスクリプトタスクを作り、
変数を読み取ってみたところ、無事意図した値を取ることが出来ました。
ありがとうございます。
今後気を付けていこうと思います。

1

スキルアップ/キャリアアップ(JOB@IT)