强制Management Studio使用ALTER TABLE而不是DROP / CREATE

时间:2010-03-12 10:13:38

标签: sql-server ddl ssms

我想知道是否有办法迫使MSSQL Management Studio生成这样的脚本:

ALTER TABLE Mytable
ADD MyCol bit NOT NULL
CONSTRAINT MyColDefault
DEFAULT 0 WITH VALUES


ALTER TABLE [dbo].Mytable
ALTER COLUMN MyCol2 int NULL

GO 

当我改变表格上一列非常简单的属性时。 如果我在设计器中执行此操作并请求生成的脚本,则脚本不会执行此类简单任务,而是复制tmp表中的所有数据,删除原始表,使用原始表名重命名tmp表。当然,丢弃并重新创建每个约束和关系。

我可以更改任何选项以更改此行为吗?或者,这可能是有可能的,我在上面使用简单的ALTER TABLE时是否有一些危险?

感谢。

4 个答案:

答案 0 :(得分:8)

是的,你可以!

在SQL Server Management Studio中,进入相关表的表设计模式,然后进行更改。但是:单击“保存”按钮,而是右键单击表设计视图,在上下文菜单的末尾应该有一个“生成更改脚本”项。

alt text http://i40.tinypic.com/33e7ite.png

单击该菜单项,您将看到一个弹出对话框,其中包含您对设计器中的表所做的更改所需的T-SQL脚本。复制或保存该T-SQL代码,并从设计器中取消,瞧 - 您有更改脚本!

更新:Marco,对不起,我认为没有任何选项可以更改默认行为,至少现在不行。您可能希望在Microsoft Connect上向Microsoft提交增强请求以提出建议 - 好主意,我想!

答案 1 :(得分:5)

您无法更改行为,只是它创建的默认脚本并不总是最有效。它以知道将起作用的格式创建脚本,尽管结果通常很慢并且资源很多。我建议您习惯为自己创建所有更改的脚本,因为您可以更好地优化它。您创建的内容没有任何问题(假设您在MyCol2上没有现有的约束/依赖关系,因为它变为可以为空的int而无效)

答案 2 :(得分:0)

只是增加@marc_s的答案。如果仍然无法生成更改脚本,因为需要重新创建表,则需要转到Tools -> Options,并在Designers -> Table and Database Designers下取消标记选项Prevent saving changes that require table re-creation

enter image description here

答案 3 :(得分:-1)

容易!只需转到Tool - > Option,然后转到Designer节点,然后选择Table and Database designer,以便取消选中Prevent saving changes that require ...复选框。

现在你可以对你的桌子设计进行任何变形!