更改SQL Server 2014中现有十进制列的精度会导致错误

问题描述 投票:2回答:1

我在几张表中有几个十进制列,我需要从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行。

任何想法,将不胜感激。谢谢!

sql-server-2012
1个回答
6
投票

这是因为您在更改数据类型时减少了有效数字的数量。如果您有任何值为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

© www.soinside.com 2019 - 2024. All rights reserved.