我使用SQL Server Management Studio直接编辑我的SQL Server数据库结构。我并不担心这会破坏生产数据库,因为我总是将我的操作限制在一些确定不会向生产服务器开放的表中——或者,至少我编辑正在使用的表时,一般只作增加的修改,而不会做删除操作。从数据库设计的观点看,添加一个新的字段总是比删除已有字段更简单些。同时这种做法破坏您所创建模式的概率非常低。
据说,当Microsoft发布SQL Server Management Studio 2008 R2时,这个公司采取了一些措施来保护人们的数据设计。然而,我发现,和它在其他产品上所做的保护措施一样,这些都并不是十分……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属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”。这个操作不需要重新启动程序。
不选择“Prevent saving changes that require table re-creation”使SQL Server Management Studio 2008 R2能够执行那些可能需要删除和重新创建表的修改操作。但是要注意,以这种方式重新创建大型表可能会造成性能问题。
有其他一些人提出了这个选项出现的另一个原因,那就是因为对大型表的修改需要一定的时间;这可能导致数据库停止响应。而“大型”的定义会因为使用场景和硬件的不同而有所差别。我的表一般是几十行到上千行,有一些会多达几百万行。对于有超过百万行记录的表来说,所有需要删除和重新创建的修改都应该作为一个计划的维护窗口的一部分执行。
作者
Serdar Yegulalp从1994年到2001年为Windows杂志写作,覆盖了广泛的技术方面。他现在是《The Windows 2000 Power Users Newsletter》一书的出版者,辛勤钻研他擅长的Windows NT, Windows 2000 and Windows XP领域,并为TechTarget写专栏。
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
数据库和数据仓库的区别在哪儿?
目前,大部分数据仓库还是用数据库进行管理。数据库是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。
-
如何使用服务来平衡Oracle RAC 数据库工作负载
为不同的应用程序配置不同的服务,DBA可以更有效地平衡集群工作负载,在Oracle RAC数据库环境下实现更好的应用程序性能。