データ コンシューマーの問題

このトピックでは、データ コンシューマーの問題のトラブルシューティングについて説明します。

SQL Server Integration Services

エンタープライズ シングル サインオン

SQL Server Integration Services で Enterprise Single Sign-Onを使用する場合は、ユーザー名とパスワードのプレースホルダー値のMS$SAME入力が必要になる場合があります。 データ リンクを使用して、SSIS と共に使用する ESSO を構成することができます。

  1. [接続] ダイアログで、[セキュリティ] メソッドの [シングル サインオン] をクリックします。

  2. ドロップダウン リスト ボックスから アフィリエイト アプリケーション を選択します。

  3. [ すべて ] ダイアログで、[ パスワード ] をクリックし、[値の編集] をクリックします。 [プロパティ値の編集]ダイアログボックスで、[プロパティ値]に「MS$SAME」と入力し、[OK]をクリックします。

  4. [ すべて ] ダイアログで、[ ユーザー ID ] をクリックし、[ 値の編集] をクリックします。 [プロパティ値の編集]ダイアログボックスで、[プロパティ値]に「MS$SAME」と入力し、[OK]をクリックします。

  5. [ 接続 ] ダイアログで、[ テスト] をクリックします。 [Microsoft データ リンク] ダイアログ ボックスに結果を表示することができます。

  6. [ OK] を クリックして構成情報を保存します。

TIMESTAMP 値を挿入する FastLoad

SQL Server Integration Services OLE DB 変換先と FastLoad を使用して、SQL Server datetime または datetime2 の値を DB2 TIMESTAMP 列に挿入すると、このエラーが発生する可能性があります。

DATETIME 値の文字列表現が有効な DATETIME 値ではありません

この問題を回避するには、Data Provider データ ソース プロパティの [早期メタデータの使用] を true に設定する必要があります。

Use Early Metadata=True

データ型のマッピング

SQL Server Integration Services のインポート ウィザードおよびエクスポート ウィザードを Microsoft SQL Server Management Studio または Business Intelligence Design Studio から使用する場合、XML マッピング ファイルを編集することで既定のデータ変換をカスタマイズできます。 インポートおよびエクスポート ウィザードの XML マッピング ファイルは次のフォルダーにあります。

C:\Program Files\Microsoft SQL Server\100\DTS\MappingFiles
C:\Program Files (x86)\Microsoft SQL Server\100\DTS\MappingFiles

IBM DB2 for i5/OS 文字および 10 進数データ型を SQL Server データ型に正しくマップするには、データ マッピング ファイルを拡張し、DB2 データ型の長いフォームのシノニムを含める必要があります。 たとえば、DB2 INTEGER ソースと SQL Server の間に次のデータ型マッピングを追加します。 このマッピングは、SQLOLEDB、SQLNCL、SQLNCLI10、System.Data.SqlClient.SqlConnection と互換性があります。 短縮形の SourceDataType 値 INT が長い形式 INTEGER に置き換えられます。

DB2 INT の次のマッピングは、DB2 for z/OS V9 ソースと互換性があります。

<!-- INT -->
<dtm:DataTypeMapping>
<dtm:SourceDataType>
<dtm:DataTypeName>INT</dtm:DataTypeName>
</dtm:SourceDataType>
<dtm:DestinationDataType>
<dtm:SimpleType>
<dtm:DataTypeName>INT</dtm:DataTypeName>
</dtm:SimpleType>
</dtm:DestinationDataType>
</dtm:DataTypeMapping>

DB2 INTEGER の次のデータ型マッピングは、DB2 for i5/OS V6R1 ソースと互換性があります。

<!-- INTEGER -->
<dtm:DataTypeMapping>
<dtm:SourceDataType>
<dtm:DataTypeName>INTEGER</dtm:DataTypeName>
</dtm:SourceDataType>
<dtm:DestinationDataType>
<dtm:SimpleType>
<dtm:DataTypeName>INT</dtm:DataTypeName>
</dtm:SimpleType>
</dtm:DestinationDataType>
</dtm:DataTypeMapping>

データ型マッピング ファイル

データ プロバイダーを使用して編集できる 3 つのマッピング ファイルを次の表に示します。

DB2 データ型名 DB2ToMSSql DB2ToMSSql10 DB2ToSSIS10
TIME DATETIME time DT_DBTIME
timestamp DATETIME datetime2 DT_DBTIMESTAMP2
DATE DATETIME DATE DT_DBDATE
CHAR CHAR CHAR DT_STR
CHAR () FOR BIT DATA BINARY BINARY DT_BYTES
CHAR () FOR MIXED DATA NCHAR NCHAR DT_WSTR
CHAR () FOR SBCS DATA CHAR CHAR DT_STR
CHARACTER CHAR CHAR DT_STR
CHARACTER () FOR BIT DATA BINARY BINARY DT_BYTES
CHARACTER () FOR MIXED DATA NCHAR NCHAR DT_WSTR
CHARACTER () FOR SBCS DATA CHAR CHAR DT_STR
NATIONAL CHARACTER NCHAR NCHAR DT_WSTR
VARCHAR VARCHAR VARCHAR DT_STR
VARCHAR () FOR BIT DATA VARBINARY VARBINARY DT_BYTES
VARCHAR () FOR MIXED DATA NVARCHAR NVARCHAR DT_WSTR
VARCHAR () FOR SBCS DATA VARCHAR VARCHAR DT_STR
CHARACTER VARYING VARCHAR VARCHAR DT_STR
CHARACTER VARYING () FOR BIT DATA VARBINARY VARBINARY DT_BYTES
CHARACTER VARYING () FOR MIXED DATA NVARCHAR NVARCHAR DT_WSTR
CHARACTER VARYING () FOR SBCS DATA VARCHAR VARCHAR DT_STR
NATIONAL CHARACTER VARYING NVARCHAR NVARCHAR DT_WSTR
LONG VARCHAR FOR BIT DATA image image DT_IMAGE
LONG VARCHAR text text DT_TEXT
GRAPHIC NCHAR NCHAR DT_WSTR
VARGRAPHIC NVARCHAR NVARCHAR DT_WSTR
GRAPHIC VARYING NVARCHAR NVARCHAR DT_WSTR
SMALLINT SMALLINT SMALLINT DT_I2
INT INT INT DT_14
INTEGER INT INT DT_14
bigint bigint bigint DT_18
DECIMAL NUMERIC NUMERIC DT_NUMERIC
NUMERIC NUMERIC NUMERIC DT_NUMERIC
real 実数 実数 DT_R4
FLOAT FLOAT FLOAT DT_R8
DOUBLE FLOAT FLOAT DT_R8
DOUBLE PRECISION FLOAT FLOAT DT_R8
BLOB image image DT_BYTES
BINARY LARGE OBJECT image image DT_BYTES
CLOB text text DT_TEXT
CLOB () FOR MIXED DATA ntext ntext DT_NTEXT
CLOB () FOR SBCS DATA text text DT_TEXT
CHAR LARGE OBJECT text text DT_TEXT
CHAR LARGE OBJECT () FOR MIXED DATA ntext ntext DT_NTEXT
CHAR LARGE OBJECT () FOR SBCS DATA text text DT_TEXT
CHARACTER LARGE OBJECT text text DT_TEXT
CHARACTER LARGE OBJECT () FOR MIXED DATA ntext ntext DT_NTEXT
CHARACTER LARGE OBJECT () FOR SBCS DATA text text DT_TEXT
130 ntext ntext DT_NTEXT

マッピング ファイルの編集後、作業中の環境に応じて、SQL Server インポートおよびエクスポート ウィザードまたは Business Intelligence Development Studio を閉じて再度開く必要があります。

SQL Server 2008 Integration Services の構成の詳細については、オンライン ブック (https://go.microsoft.com/fwlink/?LinkId=193204) の「SQL Serverのインポートおよびエクスポート ウィザードを使用したデータのインポートとエクスポート」トピックSQL Server参照してください。

データ フロー コンポーネントのカスタマイズ

SQL Server Integration Services データ フロー コンポーネントを使用すると、既定の変換およびカスタマイズした変換を実行することができます。 カスタマイズした変換は、開発者が提供したカスタム コードに基づきます。

XML 形式の SQL Server Integration Services マッピング ファイルは、インポートおよびエクスポート ウィザードで使用します。 これらのファイルはデータ フローで使用するものではありません。 SQL Server Integration Services は、パイプライン バッファー クラスを提供して、企業の開発者がデータ フロー内でデータ マッピングをカスタマイズできるようにします。 SQL Server 2008 Integration Services を使用したデータ フロー コンポーネントのカスタマイズの詳細については、オンライン ブック () の「Data Flow」トピックの「データ型SQL Server操作」https://go.microsoft.com/fwlink/?LinkId=241523を参照してください。

SQL Server のレプリケーション

[パラメーターの取得]

SQL Server レプリケーションを使用するには、[パラメーターの取得] が FALSE に設定されている必要があります。

データ型のマッピング

SQL Server レプリケーションでは、SQL Server から DB2 データ型への既定のマッピングに基づき、データが不適切に変換される場合があります。 次の SQL Server システム ストアド プロシージャを使用して、レプリケーションのデータ型マッピングを確認し、修正することをお勧めします。

  • sp_helpdatatypemap
    
  • sp_getdefaultdatatypemapping
    
  • sp_setdefaultdatatypemapping
    

    詳細については、SQL Server オンライン ブック (http://go.microsoft.com/fwlink/?LinkId=241524) の「システム ストアド プロシージャ (Transact-SQL)」のトピックを参照してください。

    SQL Server DATETIME2 を DBTYPE_TIMESTAMP にマッピングするときの問題

    DB2 for z/OS への SQL Server 2008 のレプリケーションは、SQLCODE -188 (datetime 値の文字列表現が有効な datetime 値ではない) と表示されて失敗することがあります。 このエラーが発生するのは、DATETIME2 を DB2 VARCHAR(27) にマップし、文字列のリテラル データ値と共にサブスクリプション アーティクル コマンドを使用するようにレプリケーションが構成されている場合です。

    問題の解決策と手順

    SQL Server 2008 レプリケーションを DATETIME2 から DB2 TIMESTAMP にマップするように再構成し、サブスクリプション アーティクル コマンドをパラメーターを使用して再構成します。 これにより、データ プロバイダーは、IBM DB2 データベース サーバーでサポートされている DB2 TIMESTAMP 構造体として、DATETIME2 をフォーマットできるようになります。

  1. 変更するデータ型のマッピングを確認します。 すべての手順に MASTER を使用します。

    select * from

    sys.fn_helpdatatypemap
    (
       'MSSQLSERVER',
        '%',
        '%',
        '%',
        '%',
        '%',
        0
    )
    
  2. ここで、destination_dbms は "DB2" で、source_type は "datetime2" です。結果は変更する mapping_id を示します。 この例の結果ペイン (mapping_id が 189) を次の表に示します。

    mapping_id source_dbms source_type destination_dbms destination_type destination_length
    189 MSSQLSERVER datetime2 DB2 VARCHAR 27
  3. データ型のマッピングを削除します。

    exec sp_dropdatatypemapping 189
    
  4. データ型のマッピングを追加します。

    exec  sp_adddatatypemapping
         @source_dbms = 'MSSQLSERVER',
         @source_type = 'datetime2',
         @destination_dbms = 'DB2',
         @destination_type = 'TIMESTAMP',
         @destination_nullable = 1,
         @destination_createparams = 0,
         @dataloss = 0,
         @is_default = 1
    
  5. 再度クエリを実行して新しいデータ型のマッピングを確認します。

    select * from

    select * from sys.fn_helpdatatypemap
    (
       'MSSQLSERVER',
        '%',
        '%',
        '%',
        '%',
        '%',
        0
    )
    
  6. ここで、destination_dbms = 'DB2'、source_type = 'datetime2' となります。

    結果には、変更する mapping_id が示されます。 この例の結果ペイン (mapping_id が 189) を次の表に示します。

    mapping_id source_dbms source_type destination_dbms destination_type destination_length
    494 MSSQLSERVER datetime2 DB2 timestamp NULL
  7. 再構成するレプリケーション サブスクリプション アーティクルを確認します。 マスター データベースからレプリケート元のデータベースに切り替えるには、Transact-SQL USE ステートメントを使用します。

    USE [Test]

    select name, status from sysarticles
    
  8. 結果には、変更するアーティクルの名前が表示されます。 この例では、名前が DB2TS01 である結果を次の表に示します。

    name status
    DB2TS01 25
  9. status の値が 1 または 9 である場合、アーティクルは文字列リテラルのフォーマット用に構成されています。

    status の値が 17 または 25 である場合、アーティクルはパラメーター化されたフォーマット用に構成されています。

  10. パラメーター化されたコマンド用にレプリケーション サブスクリプション アーティクルを構成します。

    USE [Test]

    DECLARE @publication AS sysname;
    DECLARE @article AS sysname;
    SET @publication = N'DB2TS_PUB01';
    SET @article = N'DB2TS01';
    EXEC sp_changearticle @publication, @article, 'status', 'parameters', 0, 0;
    

    詳細については、オンライン ブックのレプリケーション システム ストアド プロシージャの概念 (https://go.microsoft.com/fwlink/?LinkId=241525) SQL Server参照してください。

レプリケーションの INSERT 操作がエラー 8152 で失敗します: 文字列またはバイナリ データが切り捨てられます

SQL Server レプリケーションの INSERT 操作がエラー 8152 で失敗する可能性があります (文字列またはバイナリ データが切り捨てられます)。 これは、(1) Data Providerが初期メタデータを使用するように構成されておらず、(2) パラメーター化された INSERT ステートメントを使用するようにレプリケーションが構成されていない場合に発生する可能性があります。

Data Provider 接続を再構成して、SQL Server レプリケーション サブスクライバーのデータ ソース定義に "初期メタデータを使用する = true" を指定します。

詳細については、OLE DB Provider for DB2 の「DB2 データ リンクのデータ プロバイダーの構成 (DB2) すべてのプロパティ 」のドキュメントを参照してください。

オプション "24" を含むようにサブスクリプションアーティクルSQL Server レプリケーション構成し直します ("INSERT ステートメントに列名を含め、パラメーター化されたステートメントを使用します")。

詳細については、ドキュメントのSQL Server レプリケーション sp_addarticle (Transact-SQL) SQL Server参照してください。

SQL Server Analysis Services

SQL Server Analysis Servicesで使用するキューブを設計すると、DB2 サーバーでサポートされている最大長を超える可能性がある長い別名を含むSQLコマンドがツールによって生成されます。 DB2 のプラットフォームとバージョンによっては、18 文字を超えるエイリアス名を含むクエリを使用できない場合があります。 たとえば、DB2 for z/OS で配置されるオブジェクトの多くは、18 文字の名前を持ちます。 DB2 プラットフォームとバージョンについては、DB2 SQL リファレンスを参照し、DB2 データベース管理者に確認してください。 管理者または開発者が、DB2 に対するデータ型マッピングのサポートを含む 2 つの SQL Server Analysis Services 構成カートリッジ ファイルを更新して、識別子の長さ (limit-table-identifier-length) を 29 から 18 に変更することをお勧めします。 更新が必要な 2 つのカートリッジ ファイルの名前と場所は次のとおりです。

  • C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\DataWarehouseDesigner\UIRdmsCartridge\db2v0801.xs

  • C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\DataWarehouseDesigner\UIRdmsCartridge\db2v0801.xs

    SQL Server Analysis Services では、更新された構成ファイルを使用して、SQL コマンド内のオブジェクトに正しい名前を付けます。

SQL Server Migration Assistant for DB2

DB2 (SSMA) のSQL Server Migration Assistantを使用して DB2 CLOB データを読み取る場合は、接続文字列オプションを使用して SSMA 内で DB2 接続を定義し、接続文字列に次の引数を含める必要があります。

  • 早期メタデータの使用=True

この引数は、設計時に定義された早期メタデータ (パラメーターおよび列データ型) または実行時に定義された遅延メタデータを使用するように、Data Providerに指示します。 このオプションのプロパティでは、ブール型値を使用できます。 既定値は false です。 SQL Server Migration Assistant (SSMA) for DB2 を使用して CLOB データを読み取るときには true を指定します。これには、CLOB データとしてエンコードされたスキーマ情報 (SYSIBM.SYSTRIGGERS テーブルの STATEMENT 列など) が含まれます。