0

この小さな宝石のおかげで、しばらくの間、私は前進し続けてきましたが、私はまだそれほど前進していません.

環境

  • SSMS 2012 SP1 (ターゲット) (サーバー 2012 64 ビット)
  • MySQL (ソース)
  • ODBC 5.3 64 ビット Unicode ドライバーを使用するリンク サーバー

テーブルを MySQL から SSMS に移植しようとしています。テーブルの大部分は正常に動作します....8000文字を超えるキャストされた列に到達するまで。

私は問題を抱えていたので、問題のあるColumnmを選択しようとしました

シンプルな実行

SELECT RogueCol  FROM LinkServer...MyTbl

エラーを返します

OLE DB provider "MSDASQL" for linked server "LinkServer" returned message "Requested conversion is not supported.".
Msg 7341, Level 16, State 2, Line 1
Cannot get the current row value of column "[MSDASQL].RogueCol" from OLE DB provider "MSDASQL" for linked server "LinkServer". 

だから私はそれから試しました

SELECT * FROM OPENQUERY(LinkServer, 'SELECT RogueCol  FROM MyTbl')

これは同じエラーを返します

SSMSでデータを表示することさえできないように見えるので、私は完全に混乱しています(元のMySQLキャストに基づくいくつかのルールに従ってフィールドをキャストするスクリプトを持っています)

私が言うように、他の分野の大多数にとっては問題ではありません。

RogueCol の MySQL キャストは varchar(32767) です。

MSDASQL プロバイダーで有効な設定は次のとおりです。

  • ネストされたクエリ
  • レベルゼロのみ
  • インプロセスを許可
  • 「いいね」をサポート

これまでのところ、次のようなさまざまなフォーラムで「発見」した多くのことを試しました。

  • 実際の呼び出しで CASTING、CONVERTING、LEFT、LTRIM(RTRIM())。
  • TOP 1レコードに制限しようとしました(LEN = 45、文字列に空白や外国の文字はありません)
  • ANSI バージョンの ODBC ドライバーをセットアップする
  • ODBC ドライバー内のさまざまな設定 (大きな結果セットを許可する、文字セットを変更する、列を 32 ビットに制限する、文字をスペースで埋めるなど)

これには気が狂ってしまうので、あなたの集合的な知識を求めて、さらに提案をお願いできますか?

どうもありがとう

4

1 に答える 1