1

SQL サーバーの OPENQUERY 関数を使用して、Mysql サーバーからデータを取得しようとしています。クエリを実行して、mysql サーバーにあるレコードをカウントすると、問題なく値が取得されます

-this query works and it return the total records found
SELECT count(*) AS total  FROM OPENQUERY(LinkedServer, 'SELECT * FROM mydb_name.users')

しかし、私がするとき

SELECT login_user FROM OPENQUERY(LinkedServer, 'SELECT * FROM mydb_name.users')

このエラーが発生します

Msg 7347, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' for linked server 'LinkedServer' returned data that does not match expected data length for column '[MSDASQL].login_user'. The (maximum) expected data length is 60, while the returned data length is 16.

試してみましたがうまくいきませんでした

SELECT CONVERT(CHAR(60), login_user) AS name  FROM OPENQUERY(LASWEB, 'SELECT * FROM mydb_name.users')

データ型の問題だと思いますが、どうすれば回避できますか? 必要なデータを取得するにはどうすればよいですか?

ありがとう

4

2 に答える 2

2

うまくいったように変数をキャストします

SELECT login_user  FROM OPENQUERY(LASWEB, 'SELECT CAST(u.login_user AS CHAR) AS login_user  FROM mydb_name.users AS u')
于 2013-04-29T17:56:22.753 に答える