更改SQL Server 2014中现有十进制列的精度会导致错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改SQL Server 2014中现有十进制列的精度会导致错误相关的知识,希望对你有一定的参考价值。
我在几张表中有几个十进制列,我需要从decimal(9, 4)
扩展到decimal(9, 5)
。不幸的是,每次尝试我都会遇到以下错误。到目前为止,我已尝试使用SQL Server Management Studio中的设计更改它并运行查询:
alter table xxx
alter column xxx decimal (9,5) not null
错误是一样的:
Msg 8115,Level 16,State 8,Line 1 算术溢出错误将数字转换为数据类型数字。
这些是在大量存储过程和应用程序中使用的大型重要表,因此我希望避免添加新列并复制数据。每个表有250K到500K行。
任何想法,将不胜感激。谢谢!
答案
这是因为您在更改数据类型时减少了有效数字的数量。如果您有任何值为100,000或更大的行,则它将不适合新大小。如果要增加小数位数(比例),还需要将精度提高1。
alter table xxx alter COLUMN xxx decimal (10,5) not null
请注意,这会将每行的存储要求增加4个字节。存储要求将从5个字节增加到9个字节。
https://msdn.microsoft.com/en-us/library/ms187746.aspx
以上是关于更改SQL Server 2014中现有十进制列的精度会导致错误的主要内容,如果未能解决你的问题,请参考以下文章
更改 SQL Server DB 中列的数据类型时出错 - Java
如何使用 SSMA(用于访问 SQL Server)将具有不同列的表迁移到现有表中?