如何处理SSMS的修改表所出现的警告?

日期: 2010-12-13 作者:Serdar Yegulalp 来源:TechTarget中国 英文

我使用SQL Server Management Studio直接编辑我的SQL Server数据库结构。我并不担心这会破坏生产数据库,因为我总是将我的操作限制在一些确定不会向生产服务器开放的表中——或者,至少我编辑正在使用的表时,一般只作增加的修改,而不会做删除操作。从数据库设计的观点看,添加一个新的字段总是比删除已有字段更简单些。同时这种做法破坏您所创建模式的概率非常低。

  据说,当Microsoft发布SQL Server Management Studio 2008 R2时,这个公司采取了一些措施来保护人们的数据设计。然而,我发现,和它在其他产品上所做的保护措施一样,这些都并不是十分……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

我使用SQL Server Management Studio直接编辑我的SQL Server数据库结构。我并不担心这会破坏生产数据库,因为我总是将我的操作限制在一些确定不会向生产服务器开放的表中——或者,至少我编辑正在使用的表时,一般只作增加的修改,而不会做删除操作。从数据库设计的观点看,添加一个新的字段总是比删除已有字段更简单些。同时这种做法破坏您所创建模式的概率非常低。

  据说,当Microsoft发布SQL Server Management Studio 2008 R2时,这个公司采取了一些措施来保护人们的数据设计。然而,我发现,和它在其他产品上所做的保护措施一样,这些都并不是十分有效。其中有一个新的变化是专门针对于编辑表的。如果您编辑一个表,并且需要删除和重新创建时,SQL Server Management Studio会给您一个警告:

  “保存修改是不允许的。您所做的修改需要删除和重新创建以下的表。”

  接下来是一个包含操作所影响表的清单,然后您可以将它保存到一个文本文件以备将来使用。但问题是这个清单可能正包含您所操作的表。

  这种有问题的修改一般不至于这样复杂。当我把一个字段修改为“允许空值”时就会遇到这个警告。这似乎是一个很小的修改,但是这个修改会使系统检查整个表以便确保记录中这个字段没有出现空值。事实上,这是很平常的修改,但是在过去这很容易被忽略,因为Management Studio是在不提示的情况下允许您做这样的修改的。

  如果您认为使表自动地删除和重新创建不会造成问题,那么您可以禁用这个警告。打开Management Studio的Tools | Options,选择“Designers”,不选择“Prevent saving changes that require table re-creation”复选框,然后单击“OK”。这个操作不需要重新启动程序。

SSMS

  不选择“Prevent saving changes that require table re-creation”使SQL Server Management Studio 2008 R2能够执行那些可能需要删除和重新创建表的修改操作。但是要注意,以这种方式重新创建大型表可能会造成性能问题。

  有其他一些人提出了这个选项出现的另一个原因,那就是因为对大型表的修改需要一定的时间;这可能导致数据库停止响应。而“大型”的定义会因为使用场景和硬件的不同而有所差别。我的表一般是几十行到上千行,有一些会多达几百万行。对于有超过百万行记录的表来说,所有需要删除和重新创建的修改都应该作为一个计划的维护窗口的一部分执行。

作者

Serdar Yegulalp
Serdar Yegulalp

Serdar Yegulalp从1994年到2001年为Windows杂志写作,覆盖了广泛的技术方面。他现在是《The Windows 2000 Power Users Newsletter》一书的出版者,辛勤钻研他擅长的Windows NT, Windows 2000 and Windows XP领域,并为TechTarget写专栏。

相关推荐