スクリプト コンポーネントによる ODBC 変換先の作成

更新 : 2007 年 9 月 15 日

SQL Server 2005 Integration Services (SSIS) には、ODBC 変換先にデータを保存できる組み込みコンポーネントはありません。ただし、スクリプト コンポーネントを使用して ODBC 変換先を簡単に作成することができます。ここでは、「スクリプト コンポーネントによる変換先の作成」で示したカスタムの ADO.NET 変換先を使用して、それを ODBC 接続マネージャで使用できるように変更し、データを ODBC 変換先に保存します。

ms345157.note(ja-jp,SQL.90).gifメモ :
複数のデータ フロー タスクおよび複数のパッケージでより簡単に再利用できるコンポーネントを作成する場合は、このスクリプト コンポーネント サンプルのコードを基にした、カスタム データ フロー コンポーネントの作成を検討してください。詳細については、「カスタム データ フロー コンポーネントの開発」を参照してください。

この例では、既存の ODBC 接続マネージャを使用して、データ フローのデータを Microsoft SQL Server テーブルに保存する変換先コンポーネントの作成方法を示します。

データ フローで変換先として使用するスクリプト コンポーネントの構成の詳細については、「スクリプト コンポーネントによる変換先の作成」を参照してください。

ms345157.note(ja-jp,SQL.90).gifメモ :
この例では、サンプル データベース AdventureWorksPerson.Address テーブルを使用して、その第 1 列および第 4 列、つまり int 型の AddressID および nvarchar(30) 型の City の各列を、データ フローにそのまま渡します。「特定の種類のスクリプト コンポーネントの開発」の変換元、変換、および変換先の例でも、同じデータが使用されます。

このコード例と、「スクリプト コンポーネントによる変換先の作成」に示した ADO.NET 変換先のコード例を区別する次の点に注意してください。

  • マネージ コードから ODBC 接続マネージャの AcquireConnection メソッドを呼び出すことはできません。このメソッドを呼び出すと、ネイティブ オブジェクトが返されます。このため、この例では接続マネージャの接続文字列を使用して、マネージ ODBC .NET Framework データ プロバイダにより直接データ ソースに接続しています。
  • OdbcCommand には、位置パラメータが必要です。パラメータの位置は、コマンドのテキストの疑問符 (?) で示されます。一方、SqlCommand では名前付きパラメータが必要です。

このスクリプト コンポーネントの例を構成するには

  1. AdventureWorks データベースに接続する ODBC 接続マネージャを作成します。

  2. AdventureWorks データベースで次の Transact-SQL コマンドを実行して、変換先テーブルを作成します。

    CREATE TABLE [Person].[Address2](
        [AddressID] [int] NOT NULL,
        [City] [nvarchar](30) NOT NULL
    )
    
  3. 新しいスクリプト コンポーネントを [データ フロー] デザイナ画面に追加し、変換先として構成します。

  4. SSIS デザイナで、上流変換元の出力または変換の出力を変換先コンポーネントに接続します (変換を介さずに変換元を直接変換先に接続することもできます)。このサンプルを機能させるには、上流コンポーネントの出力に、AdventureWorks サンプル データベースの Person.Address テーブルにある AddressID 列と City 列を最低限含める必要があります。

  5. [スクリプト変換エディタ] を開きます。[入力列] ページで、AddressID 列と City 列を選択します。

  6. [入力および出力] ページで、入力を MyAddressInput などのわかりやすい名前に変更します。

  7. [スクリプト] ページで、[スクリプトのデザイン] をクリックし、ScriptMain クラスに次のスクリプトを入力します。スクリプト開発環境を閉じます。

  8. [接続マネージャ] ページで、ODBC 接続マネージャを追加または作成し、MyODBCConnectionManager などのわかりやすい名前を付けます。

  9. 次に、[スクリプト変換エディタ] を閉じてサンプルを実行します。

Imports System.Data.Odbc
...
Public Class ScriptMain
    Inherits UserComponent

    Dim odbcConn As OdbcConnection
    Dim odbcCmd As OdbcCommand
    Dim odbcParam As OdbcParameter

    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)

        Dim connectionString As String
        connectionString = Me.Connections.MyODBCConnectionManager.ConnectionString
        odbcConn = New OdbcConnection(connectionString)
        odbcConn.Open()

    End Sub

    Public Overrides Sub PreExecute()

        odbcCmd = New OdbcCommand("INSERT INTO Person.Address2(AddressID, City) " & _
            "VALUES(?, ?)", odbcConn)
        odbcParam = New OdbcParameter("@addressid", OdbcType.Int)
        odbcCmd.Parameters.Add(odbcParam)
        odbcParam = New OdbcParameter("@city", OdbcType.NVarChar, 30)
        odbcCmd.Parameters.Add(odbcParam)

    End Sub

    Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)

        With odbcCmd
            .Parameters("@addressid").Value = Row.AddressID
            .Parameters("@city").Value = Row.City
            .ExecuteNonQuery()
        End With

    End Sub

    Public Overrides Sub ReleaseConnections()

        odbcConn.Close()

    End Sub

End Class

変更履歴

リリース 履歴

2007 年 9 月 15 日

変更内容 :
  • 手順 6. で参照される入力名を含むようにコード例を更新しました。
  • 手順を書き直し、新しい手順を追加して、わかりやすくしました。

参照

概念

スクリプト コンポーネントによる変換先の作成

ヘルプおよび情報

SQL Server 2005 の参考資料の入手