【问题标题】:Inserting MS-SQL server Text type into MySQL server将 MS-SQL 服务器文本类型插入 MySQL 服务器
【发布时间】:2011-09-08 10:59:45
【问题描述】:

我有一个与 MySQL 5.5 服务器链接的 SQL 2008 R2 服务器。 当我尝试将 SQL 服务器中的 Text 列插入 MySQL 服务器中的 Text 列时,它失败了。 查询 -

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

SQL Server 中的 bio 列是 type text - SQL_Latin_General_CP1_CI_AS 而 MySQL 服务器中的 bio 列是 type text - charater set Latin1 collat​​e - latin1_general_ci

我得到的错误是:

消息 7399,第 16 层,状态 1,第 12 行
链接服务器“MYSQL”的 OLE DB 提供程序“MSDASQL”报告错误。提供者没有提供有关错误的任何信息。

消息 7343,第 16 级,状态 2,第 12 行
链接服务器“MYSQL”的 OLE DB 提供程序“MSDASQL”无法插入表“[MSDASQL]”。未知的提供程序错误。

【问题讨论】:

  • 如果您使用的是 SQL 2008R2,您应该知道 TEXT, NTEXT, and IMAGE 已被弃用,取而代之的是 VARCHAR(MAX), NVARCHAR(MAX), and VARBINARY(MAX)

标签: mysql sql-server insert


【解决方案1】:

MS SQL 中的TEXT 数据类型是一种奇怪的/“二等”生物。您是否有机会将该列转换为 nvarchar(max)?如果是这样,它可能会解决您的链接服务器问题。更改列类型的 T-SQL 如下所示:

ALTER TABLE [YourTableName] ALTER COLUMN [YourColumnName] nvarchar(max)

【讨论】:

    【解决方案2】:

    试试这个解决方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      相关资源
      最近更新 更多