次の方法で共有


スクリプト タスクのコーディングおよびデバッグ

更新 : 2006 年 4 月 14 日

[スクリプト タスク エディタ] でスクリプト タスクを構成したら、スクリプト タスク開発環境でカスタム コードを記述します。

ms135952.note(ja-jp,SQL.90).gif重要 :
スクリプト タスク プロジェクトからの他のアセンブリや名前空間の参照に関する重要な情報については、「スクリプティング ソリューションでの他のアセンブリの参照」を参照してください。

スクリプト タスク開発環境

スクリプト タスクは、スクリプト自体の開発環境として、Microsoft Visual Studio for Applications (VSA) を使用します。スクリプト コードは、強力な Visual Studio IDE 内の Visual Basic .NET で記述します。その他のプログラミング言語を使用する場合は、選択した言語でカスタム アセンブリを作成し、スクリプト タスク内のコードからその機能を呼び出すことができます。

スクリプト タスクで作成したスクリプトは、IDE を閉じるたびに自動的に保存され、パッケージ定義に格納されます。個別のスクリプト ファイルはありません。したがって、スクリプト タスクを使用してもパッケージの配置には影響しません。

既定では、Option Strict が IDE で有効になっています。

スクリプト タスク プロジェクトの構造

スクリプト タスクに格納されているスクリプトを作成または変更する場合、VSA は空の新しいプロジェクトを開くか、または既存のプロジェクトを再度開きます。この VSA プロジェクトを作成しても、パッケージの配置に影響はありません。このプロジェクトはパッケージ ファイル内部に保存され、スクリプト タスクは追加ファイルを作成しないためです。

スクリプト タスク プロジェクトのプロジェクト アイテムおよびクラス

既定では、VSA の [プロジェクト エクスプローラ] ウィンドウに表示されるスクリプト タスク プロジェクトには、ScriptMain というアイテムが 1 つ格納されます。次に、ScriptMain アイテムには、同じ名前で ScriptMain というクラスが 1 つ格納されます。このクラスには、パブリック サブルーチン、Main が含まれています。ScriptMain.Main サブルーチンは、ユーザーのスクリプト タスクを実行するときにランタイムが呼び出すメソッドです。

既定では、新しいスクリプトの Main サブルーチン内にあるコードは、行 Dts.TaskResult = Dts.Results.Success のみです。この行は、タスクの処理が正常に実行されたことをランタイムに通知します。Dts.TaskResult プロパティについては、「スクリプト タスクから結果を返す」で説明します。

ScriptMain アイテムには、ScriptMain クラス以外のクラスを格納できます。ScriptMain クラスを削除した場合、スクリプト タスクの EntryPoint プロパティを変更し、タスクを実行するときに実行されるクラスを指定する必要があります。クラスは、そのクラスが含まれているスクリプト タスクでのみ使用できます。

既定では、ScriptMain プロジェクト アイテムには、次のコードが自動生成されます。

' Microsoft SQL Server Integration Services Script Task
' Write scripts using Microsoft Visual Basic
' The ScriptMain class is the entry point of the Script Task.

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime

Public Class ScriptMain

' The execution engine calls this method when the task executes.
' To access the object model, use the Dts object. Connections, variables, events,
' and logging features are available as static members of the Dts class.
' Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.
' 
' To open Code and Text Editor Help, press F1.
' To open Object Browser, press Ctrl+Alt+J.

Public Sub Main()
'
' Add your code here
'
Dts.TaskResult = Dts.Results.Success
End Sub

End Class

スクリプト タスク プロジェクトのその他のプロジェクト アイテム

スクリプト タスク プロジェクトには、既定の ScriptMain アイテム以外のアイテムを格納できます。プロジェクトには、クラス、モジュール、およびコード ファイルを追加できます。また、フォルダを使用してアイテムのグループを整理できます。

追加したすべてのアイテムは、パッケージ内部に保存されます。ただし、VSA の [プロジェクト エクスプローラ] ウィンドウでアイテムを右クリックし、[エクスポート] をクリックすると、アイテムのコピーをファイル システムに保存できます。既存の Visual Basic .NET コード ファイルをスクリプト タスク プロジェクトにインポートして追加することもできます。

スクリプト タスク プロジェクトの参照

参照をマネージ アセンブリに追加するには、スクリプト タスク プロジェクト内の [プロジェクト エクスプローラ][参照] フォルダを右クリックし、次に [参照の追加] をクリックします。VSA では、マネージ アセンブリへの参照のみがサポートされています。詳細については、「スクリプティング ソリューションでの他のアセンブリの参照」を参照してください。

ms135952.note(ja-jp,SQL.90).gifメモ :
VSA IDE 内のプロジェクトの参照は、[クラス ビュー] ウィンドウ、または [プロジェクト エクスプローラ] で表示できます。[表示] メニューで [プロジェクト エクスプローラ] をクリックし、[プロジェクト エクスプローラ] ウィンドウを開きます。新しい参照は [プロジェクト] メニューまたは [プロジェクト エクスプローラ] から追加できますが、[クラス ビュー] ウィンドウからは追加できません。[プロジェクト] メニューは、コード ウィンドウまたは [プロジェクト エクスプローラ] で作業している間は使用できますが、[クラス ビュー] ウィンドウでアイテムを選択しているときには使用できません。
ms135952.note(ja-jp,SQL.90).gifメモ :
Microsoft Visual Studio for Applications 内の [参照の追加] ダイアログ ボックスの [.NET] タブには、%windir%\Microsoft.NET\Framework\v2.0.xxxxx フォルダ内にあるマネージ アセンブリの一覧が示されます。そのため、既定では、この一覧に表示されるのは主に Microsoft .NET Framework クラス ライブラリからのアセンブリに限定されます。この一覧の内容はファイルの場所によってのみ決定され、グローバル アセンブリ キャッシュ (GAC) にインストールされたファイル、またはアセンブリの他の属性やプロパティによっては決定されません。結果として、参照するアセンブリのコピーが、指定したフォルダに存在する必要があります。VSA の [参照の追加] ダイアログ ボックスには、Microsoft Visual Studio に存在する、別のフォルダ内のマネージ アセンブリの場所を探して参照するための [参照] ボタンは含まれていません。また、COM コンポーネントを参照するための [COM] タブも含まれていません。

スクリプト タスク内でのパッケージとの対話

スクリプト タスクは、ScriptObjectModel クラスのインスタンスであるグローバル オブジェクト Dts、およびそのメンバを使用して、内部のパッケージや Integration Services ランタイムとやり取りします。

次の表は、ScriptObjectModel クラスのプリンシパルのパブリック メンバの一覧です。このクラスは、グローバル オブジェクト Dts を介してスクリプト タスクのコードに公開されます。このセクションのトピックでは、これらのメンバを使用する方法についてさらに詳しく説明します。

メンバ 目的

Connections

パッケージで定義されている接続マネージャへのアクセスを提供します。

Events

スクリプト タスクでエラー、警告、および情報メッセージを発生させるためのイベント インターフェイスを提供します。

ExecutionValue

TaskResult のほか、ワークフローの分岐にも使用できる単一のオブジェクトをランタイムに返す簡単な方法を提供します。

Log

タスクの進行状況や結果などの情報を、有効なログ プロバイダに記録します。

TaskResult

タスクの成功または失敗をレポートします。

Transaction

タスクのコンテナを実行しているトランザクションが存在する場合、それを提供します。

Variables

スクリプトで使用するため、ReadOnlyVariables および ReadWriteVariables タスク プロパティの一覧に含まれる変数へのアクセスを提供します。

ScriptObjectModel クラスには、使用しない可能性のあるパブリック メンバも含まれています。

メンバ 説明

Logging

互換性のために残されています。ログ記録を実行するには、Log メソッドの方が簡単で直接的です。

VariableDispenser

変数にアクセスするには、Variables プロパティの方が便利です。VariableDispenser も使用できますが、読み書きする変数をロックおよびロック解除するためのメソッドを明示的に呼び出す必要があります。Variables プロパティを使用すると、スクリプト タスクにより自動的にロック セマンティクスが処理されます。

スクリプト タスクのデバッグ

スクリプト タスクのコードをデバッグするには、コードに少なくとも 1 つのブレークポイントを設定し、次に VSA IDE を閉じて Business Intelligence Development Studio でパッケージを実行します。パッケージが実行されてスクリプト タスクが開始されると、VSA IDE が再度開き、読み取り専用モードでコードが表示されます。実行によりブレークポイントに到達したら、変数の値の検証や、残りのコードのステップ スルーができます。

ms135952.note(ja-jp,SQL.90).gifメモ :
スクリプト タスクをデバッグするには、パッケージを実行する必要があります。個別のタスクのみを実行する場合、スクリプト タスク コードのブレークポイントは無視されます。
ms135952.note(ja-jp,SQL.90).gifメモ :
パッケージ実行タスクから実行されている子パッケージの一部としてスクリプト タスクを実行する場合は、スクリプト タスクをデバッグできません。このような場合、子パッケージのスクリプト タスク内で設定したブレークポイントは無視されます。子パッケージを単独で実行することにより、通常どおりパッケージをデバッグできます。

参照

関連項目

スクリプティング ソリューションでの他のアセンブリの参照
スクリプト タスク エディタでのスクリプト タスクの構成

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

新しい内容 :
  • カスタム アセンブリを他のプログラミング言語のプログラムに使用できることを追加しました。
  • スクリプトが自動的に保存されることを追加しました。
  • Option Strict が既定で有効であることを追加しました。
  • コード ファイルがエクスポートおよびインポート可能であることを追加しました。
  • 子パッケージでのスクリプト タスクのデバッグに関する制限事項を追加しました。