Вставка MS-SQL-сервера Текстовый тип в MySQL-сервер - PullRequest
1 голос
/ 08 сентября 2011

У меня есть сервер SQL 2008 R2, связанный с сервером MySQL 5.5.Когда я пытаюсь вставить текстовый столбец с сервера SQL в текстовый столбец на сервере MySQL, происходит сбой.Запрос -

INSERT INTO OPENQUERY(MYSQL, 'SELECT bio FROM d.test')
SELECT bio FROM test.dbo.ARTIST
where art_no = 3

столбец био в SQL Server имеет тип text - SQL_Latin_General_CP1_CI_AS, а столбец био на сервере MySQL имеет тип text - набор символов Latin1 collate - latin1_general_ci

Ошибки Iget являются:

Msg 7399, уровень 16, состояние 1, строка 12
Поставщик OLE DB "MSDASQL" для связанного сервера "MYSQL" сообщил об ошибке.Поставщик не предоставил никакой информации об ошибке.

Сообщение 7343, уровень 16, состояние 2, строка 12
Поставщик OLE DB "MSDASQL" для связанного сервера "MYSQL" не смог вставить таблицу INTO "[MSDASQL]».Неизвестная ошибка провайдера.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2011

Попробуйте это в качестве обходного пути:

 INSERT INTO OPENQUERY(MYSQL, 'SELECT bio FROM d.test')
       SELECT CAST(bio as varchar(max))
       FROM test.dbo.ARTIST
       where art_no = 3
0 голосов
/ 03 декабря 2011

Тип данных TEXT в MS SQL является нечетным / "вторым классом" существом. Есть ли шанс, что вы сможете преобразовать столбец в nvarchar (max)? Если это так, возможно, это может решить проблему с вашим связанным сервером. T-SQL для изменения типа столбца выглядит так:

ALTER TABLE [YourTableName] ALTER COLUMN [YourColumnName] nvarchar(max)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...