QA@IT
«質問へ戻る

図を追加しました。

0
本文
 ※また今回の現象を、SQLserver2012,SSIS2012の環境でも試しましたが、同じ箇所でエラーが発生しました。
 
 
+※データフロータスク
+_____________
+│  ADO NET 変換元     │
+ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
+           ↓
+_____________
+│    データ変換    │
+ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
+      ↓
+_____________
+│     参照      │
+ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
+          ↓ 参照の一致出力
+_____________
+│  SQL Server 変換先  │
+ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
+ 
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+※「参照」コンポーネント内の「列」
+ [使用できる入力列]                                                                  
+____________                            
+│  sbn_code     │                         [使用できる参照列]
+――――――――――――                       ____________
+│  sbn_code_copy  │━━━━━━━━━━━│  st_code        │
+ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄                  ――――――――――――
+                                              │  st_data1       │
+                                               ――――――――――――
+                                              │  st_data2       │
+                                                ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
+
+
 どうぞ宜しくお願い致します。

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

SSIS 2008の参照コンポーネントに関する質問です。

[環境]

WindowsServer2003(Standard x64 Edition)
Microsoft Visual Studio 2008 R2
(Microsoft SQL Server Management Studio : 10.50.1600.1)
SSIS 2008
(Microsoft Visual Studio 2008 : Version 9.0.30729.4462 QFE
Microsoft .NET Framework    : Version 3.5 SP1)
プロジェクトは、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.ICommandWith
 Parameters.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が返されました。

※ちなみに、同じデータを用いてフルキャッシュで行った場合、正しくデータが移行されます。(警告は出ます。)
 しかし、この手法だと実行時間が長いため、要件を満たすことができません。
※また今回の現象を、SQLserver2012,SSIS2012の環境でも試しましたが、同じ箇所でエラーが発生しました。

※データフロータスク
_____________
│ ADO NET 変換元 │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

_____________
│   データ変換  │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ↓
_____________
│    参照    │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ↓ 参照の一致出力
_____________
│ SQL Server 変換先 │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
※「参照」コンポーネント内の「列」
[使用できる入力列]

____________

│  sbn_code    │ [使用できる参照列]
―――――――――――― ____________
│  sbn_code_copy  │━━━━━━━━━━━│  st_code   │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄      ――――――――――――
│  st_data1   │
――――――――――――
│  st_data2   │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

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

SSIS 2008の参照コンポーネントに関する質問です。

[環境]
> WindowsServer2003(Standard x64 Edition)
> Microsoft Visual Studio 2008 R2
>   (Microsoft SQL Server Management Studio  :  10.50.1600.1)
> SSIS 2008
>   (Microsoft Visual Studio 2008 : Version 9.0.30729.4462 QFE
>    Microsoft .NET Framework    : Version 3.5 SP1)
> プロジェクトは、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.ICommandWith
> Parameters.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が返されました。

※ちなみに、同じデータを用いてフルキャッシュで行った場合、正しくデータが移行されます。(警告は出ます。)
 しかし、この手法だと実行時間が長いため、要件を満たすことができません。
※また今回の現象を、SQLserver2012,SSIS2012の環境でも試しましたが、同じ箇所でエラーが発生しました。


※データフロータスク
_____________
│  ADO NET 変換元     │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ↓
_____________
│    データ変換    │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ↓
_____________
│     参照      │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ↓ 参照の一致出力
_____________
│  SQL Server 変換先  │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
※「参照」コンポーネント内の「列」
 [使用できる入力列]                                                                  
____________                            
│  sbn_code     │                         [使用できる参照列]
――――――――――――                       ____________
│  sbn_code_copy  │━━━━━━━━━━━│  st_code        │
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄                  ――――――――――――
                                              │  st_data1       │
                                               ――――――――――――
                                              │  st_data2       │
                                                ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


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

質問を投稿

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

SSIS 2008の参照コンポーネントに関する質問です。

[環境]

WindowsServer2003(Standard x64 Edition)
Microsoft Visual Studio 2008 R2
(Microsoft SQL Server Management Studio : 10.50.1600.1)
SSIS 2008
(Microsoft Visual Studio 2008 : Version 9.0.30729.4462 QFE
Microsoft .NET Framework    : Version 3.5 SP1)
プロジェクトは、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.ICommandWith
 Parameters.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が返されました。

※ちなみに、同じデータを用いてフルキャッシュで行った場合、正しくデータが移行されます。(警告は出ます。)
 しかし、この手法だと実行時間が長いため、要件を満たすことができません。
※また今回の現象を、SQLserver2012,SSIS2012の環境でも試しましたが、同じ箇所でエラーが発生しました。

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

SSIS 2008の参照コンポーネントに関する質問です。

[環境]
> WindowsServer2003(Standard x64 Edition)
> Microsoft Visual Studio 2008 R2
>   (Microsoft SQL Server Management Studio  :  10.50.1600.1)
> SSIS 2008
>   (Microsoft Visual Studio 2008 : Version 9.0.30729.4462 QFE
>    Microsoft .NET Framework    : Version 3.5 SP1)
> プロジェクトは、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.ICommandWith
> Parameters.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が返されました。

※ちなみに、同じデータを用いてフルキャッシュで行った場合、正しくデータが移行されます。(警告は出ます。)
 しかし、この手法だと実行時間が長いため、要件を満たすことができません。
※また今回の現象を、SQLserver2012,SSIS2012の環境でも試しましたが、同じ箇所でエラーが発生しました。


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