加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – SQL Server如何在将列更新为int时解决事务日志填

发布时间:2020-12-12 06:14:44 所属栏目:MsSql教程 来源:网络整理
导读:我有一个名为BRITTNEY_SPEARS_MARRIAGES的SQL Server 2005表,它包含以下列: MarrigeId tinyint,HusbandName varchar(500),MarrigeLength int 现在我有另一张表BRITTNEY_SPEARS_MARRIAGE_STORIES StoryId int,MarriageId tinyint,StoryText nvarchar(max) 问
我有一个名为BRITTNEY_SPEARS_MARRIAGES的SQL Server 2005表,它包含以下列:
MarrigeId tinyint,HusbandName varchar(500),MarrigeLength int

现在我有另一张表BRITTNEY_SPEARS_MARRIAGE_STORIES

StoryId int,MarriageId tinyint,StoryText nvarchar(max)

问题是我们想要将MarrigeId列从tinyint更新为int.我们只是觉得布兰妮在完成所有事情之前会有很多婚姻.

现在BRITTNEY_SPEARS_MARRIAGE_STORIES表中有1800万行(嘿这个女孩有一些问题)所以当我们去做更新时,事务日志会填满,我们的SQL Server盒就会死掉.

我们怎么能解决这个问题呢?

有没有说“嘿SQL Server我将更新这个专栏并使其更大.相信我在这个SQL Server上.请不要填写事务日志,而你试图验证一切?”

解决方法

没有办法告诉SQL Server不要使用事务日志.

您可以做的是将数据库的恢复模型设置为SIMPLE,这将在需要空间时覆盖旧的日志条目.但是,您不应该在生产服务器上执行此操作,因为您将无法执行某些类型的还原,例如时间点还原.

或者,您可以将事务日志文件设置得更大 – 作为一个不科学的经验法则,我要确保A)您的事务日志的可用空间至少比表的大小多1.5倍或B)您的事务日志可以自动增长到至少具有此磁盘空间量的驱动器.

您可以通过备份日志来释放事务日志空间.如果您不关心日志内容,请将文件丢弃.对此的快捷方式是BACKUP LOG<您的数据库名称>要DISK =’NUL:’.同样,不要在生产服务器上执行此操作,除非您完全确定您了解其含义.

另一件需要注意的事情(虽然它与你的问题并不完全密切相关)是确保你正在扩展的表格上有一个聚集索引.如果没有,那么表可能会产生非常大量的堆碎片,并且在这样的更改中可能变得不必要地大.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读