MSSQL 2016数据库附加至2019后修改Float值报错,求原因及解决方法
问题描述
将MSSQL 2016中创建的数据库附加到MSSQL 2019环境后,修改Float数据类型的值时触发错误:
此单元格中修改的值未被识别为有效。.Net Framework Data Type: Double 错误消息:输入字符串格式不正确
经测试,必须使用/字符而非点号.来输入数值才能成功修改。
问题原因
这是SQL Server Management Studio(SSMS)的区域语言适配逻辑导致的,与SQL Server数据库引擎本身无关:
- SSMS会读取操作系统的区域设置来识别数值分隔符,若系统区域设置中将小数分隔符设为
/,SSMS就会强制要求用斜杠输入浮点数。 - 数据库从2016迁移到2019时,Float类型的底层定义未发生变化,但SSMS的输入规则随系统区域设置改变。
解决方法
方法1:调整操作系统区域设置
- 打开Windows「控制面板」→「区域」→「其他日期、时间和区域设置」→「更改日期、时间或数字格式」→「其他设置」
- 在「数字」选项卡中,将「小数分隔符」改为
.(点号) - 重启SSMS后生效
方法2:修改SSMS的显示语言设置
- 打开SSMS,点击顶部菜单「工具」→「选项」
- 展开「环境」→「国际设置」,选择「英语(美国)」作为显示语言
- 重启SSMS,此时会使用标准点号作为小数分隔符
方法3:使用T-SQL语句直接修改
绕过SSMS图形界面的输入限制,执行SQL语句修改字段值:
UPDATE 目标表名 SET Float字段名 = 123.45 -- 此处使用标准点号即可 WHERE 筛选条件;
内容的提问来源于stack exchange,提问作者hmahdavi
相关产品推荐
相关产品推荐

