この小さな宝石のおかげで、しばらくの間、私は前進し続けてきましたが、私はまだそれほど前進していません.
環境
- 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 ビットに制限する、文字をスペースで埋めるなど)
これには気が狂ってしまうので、あなたの集合的な知識を求めて、さらに提案をお願いできますか?
どうもありがとう