私はプロジェクトを持っていますが、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をインストールする必要がありました)
すべてのアイデアは歓迎されるであろう、私は最後にかなりのです私の想像力のうちの一つ。
ありがとうございます!
あなたがそのような 'ADO'として、異なる接続タイプを使用してみましたか? – iamdave