none
[SSIS]参照コンポーネントのパラメータ RRS feed

  • 質問

  • SSIS2008に関する質問です。

    {環境:    WindowsServer2003(Standard x64 Edition)
            Microsoft Visual Studio 2008
            プロジェクトは、32bitのSSISランタイム}

    sqlserverのデータを参照して、oracleデータをsqlserverへ移行するフローを考えております。

    まず「ADO.NET 変換元」でsqlserverのデータ[sbn_code]をSELECTし、
    それを参照して、紐づくoracleデータ[st_data1等]を移行したいです。

    そこで、データフロー内で「参照」コンポーネントを用いて、
    [sbn_code]をパラメータとし、部分キャッシュによる方法を考えております。
    しかし、「参照」コンポーネント内「詳細設定」のカスタムクエリに、
    以下のSQL文を書き「パラメーター」ボタンを押下後、エラーが出てしまいます。

    どなたか解決方法をご教授頂けますでしょうか。

    ・カスタムクエリのSQL文⇒  SELECT st_table.st_code,
                                    st_table.st_data1,
                                    st_table.st_data2
                                    FROM st_table
                                    WHERE st_table.st_code = ?
    ・「パラメーター」押下後のエラー⇒
     System.Runtime.InteropServices.COMException (0x80040E51):
     プロバイダがパラメータ情報を得られず SetParameterInfo が呼び出されていません。
        場所 Microsoft.DataTransformationServices.Design.UnsafeNativeMethods.
     ICommandWithParameters.GetParameterInfo(IntPtr& pcParams, IntPtr& prgParamInfo,IntPtr& ppNamesBuffer)
        場所 Microsoft.DataTransformationServices.Design.DesignUtils.
     GetQueryParameters(ConnectionManager connectionManager, String sqlStatement)
        場所 Microsoft.DataTransformationServices.DataFlowUI.LookupAdvancedPage.
     buttonParam_Click(Object sender, EventArgs e)

    -------------------------------------------------------------------------------------------------------------------
    ・「ADO.NET 変換元」内のSQL⇒    SELECT sbn_table.sbn_code
                                    FROM sbn_table
    ・フロー作成時の警告(1箇所)⇒
     [参照[16]]警告:OLE DBプロバイダーから列コードページ情報を取得できません。
      コンポーネントで"DefaultCodePage"プロパティがサポートされている場合は、そのプロパティのコードページを使用します。
      現在の文字列のコードページの値が正しくない場合は、プロパティの値を変更してください。
      コンポーネントでこのプロパティがサポートされていない場合は、コンポーネントのロケールIDのコードページを使用します。
    ・デバッグ後のエラー(3箇所)⇒
     [参照[16]]エラー:SSISエラーコードDTS_E_OLEDBERROR。OLE DBエラーが発生しました。エラーコード:0x80040E5D。
      OLE DBレコードを使用できます。ソース:"Microsoft OLE DB Provider for Oracle" Hresult:0x80040E5D
      説明:"パラメータ名は認識されていません。"。
     [参照[16]]エラー:パラメーターのバインド中にOLE DBエラーが発生しました。
      SQLCommandプロパティおよびSqlCommandParamプロパティを確認してください。
     [SSIS.Pipeline]エラー:コンポーネント"参照"(16)が実行前フェーズに失敗し、エラーコード0xC020824Fが返されました。

    ※ちなみに、同じデータを用いてフルキャッシュで行った場合、正しくデータが移行されます。(警告は出ます。)
     しかし、この手法だと実行時間が長いため、要件を満たすことができません。


    どうぞ宜しくお願い致します。

    2013年10月31日 10:32

すべての返信

  • h.nakamura さん、こんにちは
    フォーラム オペレーターの星 睦美です。

    フォーラムの回答者にも質問の事象に関するトラブルシューティングの手がかりになればと思いますので、
    私からはh.nakamura さんの環境に関して確認させていただきますね。

    SQL Server 2008 には最新のサービス パックは適用されていますでしょうか?

    ・(補足) SQL Server 2008 の最新の Service Pack を入手する方法:


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2013年11月1日 7:06
  • 星 睦美さん
    いつもお世話になっております。

    ご回答いただき、誠にありがとうございます。
    SQL Serverの環境を確認したところ、バージョンはSQL Server2008 R2でした。
    バージョン情報は以下になります。
            【SQL Server2008 R2】
            Microsoft SQL Server Management Studio          10.50.1600.1
            Microsoft Analysis Services クライアント ツール  10.50.1600.1
            Microsoft Data Access Components (MDAC) 3.86.3959
            Microsoft MSXML                         2.6 3.0 5.0 6.0
            Microsoft Internet Explorer                     6.0.3790.3959
            Microsoft .NET Framework                        2.0.50727.3053
            オペレーティング システム                           5.2.3790

    また、SSIS2008のバージョン情報は以下になります。
            【SSIS2008】
            Microsoft Visual Studio 2008
            Version 9.0.30729.4462 QFE
            Microsoft .NET Framework
            Version 3.5 SP1

            インストールされている Edition: IDE Standard

     SQL Server Analysis Services
            Microsoft SQL Server Analysis Services デザイナー
            Version 10.50.1600.1

            SQL Server Integration Services
            Microsoft SQL Server Integration Services デザイナー
            バージョン 10.50.1600.1

            SQL Server Reporting Services
            Microsoft SQL Server Reporting Services デザイナー
            Version 10.50.1600.1

    また今回の現象を、SQLserver2012,SSIS2012の環境でも試しましたが、同じ箇所でエラーが発生してしまいました。
    ちなみにバージョン情報は以下になります。
            【SQL Server2012】
            Microsoft SQL Server Management Studio          11.0.3128.0
            Microsoft Analysis Services クライアント ツール  11.0.3128.0
            Microsoft Data Access Components (MDAC) 6.1.7601.17514
            Microsoft MSXML                         3.0 6.0
            Microsoft Internet Explorer                     8.0.7601.17514
            Microsoft .NET Framework                        4.0.30319.17929
            オペレーティング システム                           6.1.7601

            ------------------------------------------------------------------------------
            【SSIS2012】

     Microsoft Visual Studio 2012 Shell (Integrated)
            Version 11.0.50727.1 RTMREL
            Microsoft .NET Framework
            Version 4.5.50709

            インストールされているバージョン: IDE Standard

            Microsoft Visual Studio Tools for Applications 2012   04932-004-0017006-02334
            Microsoft Visual Studio Tools for Applications 2012

            Visual Basic 2012   04932-004-0017006-02334
            Microsoft Visual Basic 2012

            Visual C# 2012   04932-004-0017006-02334
            Microsoft Visual C# 2012

            SQL Server Analysis Services
            Microsoft SQL Server Analysis Services デザイナー
            Version 11.0.3369.0

            SQL Server Integration Services
            Microsoft SQL Server Integration Services デザイナー
            バージョン 11.0.3369.0

            SQL Server Reporting Services
            Microsoft SQL Server Reporting Services デザイナー
            Version 11.0.3369.0

    どうぞ宜しくお願い致します。

    2013年11月1日 9:06
  • まだ画像が挿入できないため、図で表します。

    ※データフロータスク

    _____________

      ADO NET 変換元       

     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

                     

    _____________

        データ変換         

     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

     ↓

    _____________

         参照           

     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

     ↓ 参照の一致出力

    _____________

      SQL Server 変換先   

     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ※「参照」コンポーネント内の「列」

     [使用できる入力列]                                                                 

    ____________                           

    │  sbn_code                                             [使用できる参照列]

    ――――――――――――                                   ____________

    │  sbn_code_copy   │━━━━━━━━━━━│  st_code         │

     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄                          ――――――――――――

                                                                             │  st_data1       │

                                                                              ――――――――――――

                                                           │  st_data2       │

                                                                               ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

     

    お気づきの点がありましたら、どなたかアドバイスお願い致します。



    • 編集済み h.nakamura 2013年11月7日 12:53 図がずれていたため
    2013年11月7日 12:47