2017-03-07 3 views
2

私はプロジェクトを持っていますが、MySQLデータベースからSQL2012のDBにデータを移動しています。今のところ空想的ではなく、まっすぐなデータのプッシュはありません。私はODBC経由でMySQLインスタンスにアクセスしており、SQL DBはOLE接続です。パッケージが生成されると、ODBCソースとOLEデスティネーションの間にメタデータの不一致があります。 (それはすべてこれまでのデータフローにあります) "Column" "ユニコードと非ユニコードの文字列型の間では変換できません"というメッセージが表示されます。BIMLが不正なメタデータを作成しています

ソース&の間のパスエディタでメタデータを調べると、問題のソース列は長さ255、コードページ1252のDT_STRとして読み取られます。ただし、Unicodeのutf8_general_ciとして照合されます。

対象となるSQLデータベーステーブルの対応する列は、同じ長さのvarcharです。

OLEの宛先を開いて[OK]をクリックすると、メタデータがリフレッシュされ、パッケージを保存した後で正常に動作します。これは、BIMLを使用してパッケージを作成するという全目的を破り、永久に50以上のパッケージを開き、メタデータをリフレッシュして保存します。

私は行動の変更なしでいくつかのことを試してみました:

  • は、UnicodeとANSI MySQLのODBCドライバの間で変更します。
  • 宛先列をnvarcharにしようとしました。しかし、私はその作業を行うためにデータ変換の変換を入れなければなりませんでした。
  • OLEDBDestinationのExternalTableOutput要素の[]内にスキーマ/テーブル名を囲みます。
  • 変更されたSQLネイティブクライアントのバージョン。
  • MySQLから取得したソースクエリの最後に 'COLLATE latin1_bin'ステートメントを挿入します。
  • 元はVS2015付き/ BimlExpressで、SSDT 2012 with BimlExpressで試しました。 (ところで... BIMLが見つからないためMicrosoft.DataWarehouse.InterfacesのDLLのSSDT2012にコンパイルするために取得するために、2014年SSDTをインストールする必要がありました)

すべてのアイデアは歓迎されるであろう、私は最後にかなりのです私の想像力のうちの一つ。

ありがとうございます!

+0

あなたがそのような 'ADO'として、異なる接続タイプを使用してみましたか? – iamdave

答えて

0

私は同様の問題で苦労しました。最終的には、生成されたパッケージをメモ帳で開いて、テキストファイルを介してwstrという単語をバイトに置き換えなければなりませんでした。私は救われ、再開され、それはすべて動作します。

+0

@lmiguelvargasfこれは実際にも答えを出そうとします。 –

関連する問題