none
将 expression 转换为数据类型 nvarchar 时出现算术溢出错误 RRS feed

  • 问题

  • insert into openquery(mysql,'select * from T_SYS_Right') select * from T_SYS_Right with (nolock)

    两个表的数据类型是一样的

    sqlserver中的字符串是nvarchar(100)

    但是在mysql中没有nvarchar这个类型,因此在mysql中创建的时候改成varchar(200),防止nvarchar和varchar在字节有区别特意扩大一倍来创建的表

    但是执行语句的时候还是报错了:

    消息 8115,级别 16,状态 2,第 6 行
    将 expression 转换为数据类型 nvarchar 时出现算术溢出错误。
    语句已终止。

    这种情况是什么原因导致的?


    2020年11月5日 9:28

答案

  • 你好,

    您是在尝试使用openquery将SQL Server表中的数据加载到mysql数据库中的表,我不熟悉MySQL,但是根据报错,还是字段数据类型转化的问题。

    尝试使用SQL Server导入和导出向导以加载数据。

    https://docs.microsoft.com/zh-cn/sql/integration-services/import-export-data/connect-to-a-mysql-data-source-sql-server-import-and-export-wizard?view=sql-server-ver15


    ""SQL Server related"" forum will be migrated to a new home on Microsoft Q&A SQL Server!
    We invite you to post new questions in the "SQL Server related" forum’s new home on Microsoft Q&A SQL Server !
    For more information, please refer to the sticky post.


    2020年11月5日 10:30

全部回复

  • 你好,

    您是在尝试使用openquery将SQL Server表中的数据加载到mysql数据库中的表,我不熟悉MySQL,但是根据报错,还是字段数据类型转化的问题。

    尝试使用SQL Server导入和导出向导以加载数据。

    https://docs.microsoft.com/zh-cn/sql/integration-services/import-export-data/connect-to-a-mysql-data-source-sql-server-import-and-export-wizard?view=sql-server-ver15


    ""SQL Server related"" forum will be migrated to a new home on Microsoft Q&A SQL Server!
    We invite you to post new questions in the "SQL Server related" forum’s new home on Microsoft Q&A SQL Server !
    For more information, please refer to the sticky post.


    2020年11月5日 10:30
  • 你好,

    您是在尝试使用openquery将SQL Server表中的数据加载到mysql数据库中的表,我不熟悉MySQL,但是根据报错,还是字段数据类型转化的问题。

    尝试使用SQL Server导入和导出向导以加载数据。

    https://docs.microsoft.com/zh-cn/sql/integration-services/import-export-data/connect-to-a-mysql-data-source-sql-server-import-and-export-wizard?view=sql-server-ver15


    ""SQL Server related"" forum will be migrated to a new home on Microsoft Q&A SQL Server!
    We invite you to post new questions in the "SQL Server related" forum’s new home on Microsoft Q&A SQL Server !
    For more information, please refer to the sticky post.


    请教下使用SQL Server导入和导出 这种方式和insert into openquery 哪种方式理论上会快些,比如表有千万级别的数据量
    2020年11月6日 1:28
  • 好,

    对于大量的数据迁移,我建议您使用导入导出向导,另外可以使用SQL Server Migration Assistant (SSMA) 或者 SSIS。

    ""SQL Server related"" forum will be migrated to a new home on Microsoft Q&A SQL Server!
    We invite you to post new questions in the "SQL Server related" forum’s new home on Microsoft Q&A SQL Server !
    For more information, please refer to the sticky post.

    2020年11月6日 1:50
  • 字符集校验规则(collation)是在字符集内用于比较字符的一套规则,即字符集的排序规则。

    MySQL服务器可以支持多种字符集,在同一台服务器,同一个数据库,甚至同一个表的不同字段都可以指定使用不同的字符集,相比oracle数据库管理系统,在同一个数据库只能使用相同的字符集,MySQL存在更大的灵活性。

    每种字符集可能有多种校对规则,并且有一个默认的校对规则,每个校对规则只是针对某个字符集,和其他的字符集么有关系。

    在MySQL中,字符集的概念和编码方案被看做是同义词,一个字符集是一个转换表和一个编码方案的组合。

    请问:你使用的MySQL服务器、数据库和表字段采用的是哪个字符集?
    2020年11月6日 2:21
  • 确定一下 mysql 使用的字符集: show create table T_SYS_Right
    2020年11月9日 1:08
  • 已解决是另一个char字段过小导致
    2020年11月9日 6:38
  • 你好,

    很高兴听到您的问题已经解决。
    您可以将您的回复标记为答案。这会对其他遇到类似问题的社区成员有帮助。

    谢谢

    2020年11月9日 6:54