mar*_*rco 12 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
Run Code Online (Sandbox Code Playgroud)
当我改变一个表上的一个非常简单的列属性时.如果我在设计器中执行此操作并请求生成的脚本,则脚本不会执行此类简单任务,而是复制tmp表中的所有数据,删除原始表,使用原始表名重命名tmp表.当然,丢弃并重新创建每个约束和关系.
有什么选择我可以改变以改变这种行为吗?或者,这可能是有可能的,在使用上面的简单ALTER TABLE时是否存在一些危险?
谢谢.
是的你可以!
在SQL Server Management Studio中,进入相关表的表设计模式,并进行更改.但是:你不点击"保存"按钮,但在表的设计视图,而不是单击鼠标右键,应该有上下文菜单的最后一个"生成更改脚本"项目.
替代文字http://i40.tinypic.com/33e7ite.png
单击该菜单项,您将看到一个弹出对话框,其中包含您对设计器中的表所做的更改所需的T-SQL脚本.复制或保存该T-SQL代码,并从设计器中取消,瞧 - 您有更改脚本!
更新: Marco,对不起,我认为没有任何选项可以更改默认行为,至少现在不行.您可能希望在Microsoft Connect上向Microsoft提交增强请求以提出建议 - 好主意,我想!
您无法更改行为,只是它创建的默认脚本并不总是最有效.它以一种它知道可行的格式创建脚本,尽管结果通常很慢并且资源很多.我建议您习惯为自己创建所有更改的脚本,因为您可以更好地优化它.您创建的内容没有任何问题(假设您在MyCol2上没有现有的约束/依赖关系,因为它变为可以为空的int而无效)
归档时间: |
|
查看次数: |
12116 次 |
最近记录: |