26

在 SQL Server Management Studio 中,当将设计视图中的现有字段从DECIMAL (16,14)更改为DECIMAL (18,14)它时,我将无法在不删除整个表及其所有数据的情况下进行保存。

一旦数据库填充了记录,是否可以更改字段类型?

4

2 回答 2

70

只需使用 T-SQL 脚本而不是可视化设计器即可实现您的目标:

ALTER TABLE dbo.YourTableNameHere
ALTER COLUMN YourColumnNameHere DECIMAL(18, 14) 

你应该没事。

视觉设计师采取了更加谨慎的方法,即使用新结构创建表,然后复制所有数据——它可以工作,但很乏味。通常,只要您不截断列(使其更短),您绝对可以使用 T-SQL 语句“就地”更改列的数据类型。

另外:默认情况下,SSMS 设计器会格外小心,不允许任何需要删除和重新创建表循环的更改。Tools > Options您可以在此对话框中禁用这种额外的谨慎:

在此处输入图像描述

如果取消选中该选项,您将能够在视觉设计器中进行“破坏性”更改

于 2012-06-14T14:32:33.903 回答
0

即使在 SSMS 中未选中该选项,Designer 仍会删除该表。下次它不会提示你。为了证明,启动 SQL 分析器并使用 SSMS 设计器更改列,您将看到在执行更改表命令之前发出了删除表命令。

于 2016-08-12T16:47:16.037 回答