我想问一下为啥我的SQL数据库会一下子变了好几百兆呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想问一下为啥我的SQL数据库会一下子变了好几百兆呢相关的知识,希望对你有一定的参考价值。

我想问一下为什么我的SQL数据库会一下子变了好几百兆呢原来是600多兆现在我就改了两个表的字段和建了几表,为什么会一下变成1.7G了呢,谢谢了,非常急,谢谢了!!!!!!!!!!
我添的那两个表里的数据不多啊,我只是在另外的几个表里加了几个字段,大多是varchar类型的,还有个表里用了一个text类型的,会不会是因为有次,里面的好不少数据我把他用循环改了一下数据的sort_id值,比如以前是2的现在我全部都更新为3了!这样的操作会不会影响数据库变大?应该怎么解决呢?谢谢好心的大哥高手们了!!就是_Log.LDF文件变大了,请问是怎么回事?

SQL Server 的事务日志意外增大或充满的处理方法

事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf。
在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展。
一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发。
然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满。通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,您将收到如下错误消息:
Error:9002, Severity:17, State:2
The log file for database '%.*ls' is full.
除了出现此错误消息之外,SQL Server 还可能因为缺少事务日志扩展空间而将数据库标记为 SUSPECT。有关如何从此情形中恢复的其他信息,请参见 SQL Server 联机帮助中的“磁盘空间不足”主题。

另外,事务日志扩展可能导致下列情形:
· 非常大的事务日志文件。
· 事务可能会失败并可能开始回滚。
· 事务可能会用很长时间才能完成。
· 可能发生性能问题。
· 可能发生阻塞现象。

原因
事务日志扩展可能由于以下原因或情形而发生:
· 未提交的事务
· 非常大的事务
· 操作:DBCC DBREINDEX 和 CREATE INDEX
· 在从事务日志备份还原时
· 客户端应用程序不处理所有结果
· 查询在事务日志完成扩展之前超时,您收到假的“Log Full”错误消息
· 未复制的事务

解决方法
日志文件满而造成SQL数据库无法写入文件时,可用两种方法:
一种方法:清空日志。
1.打开查询分析器,输入命令
DUMP TRANSACTION 数据库名 WITH NO_LOG
2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

另一种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
1: 删除LOG
分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K。

注意:建议使用第一种方法。

如果以后,不想要它变大。
SQL2000下使用:
在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
或用SQL语句:
alter database 数据库名 set recovery simple

另外,如上图中数据库属性有两个选项,与事务日志的增长有关:
Truncate log on checkpoint
(此选项用于SQL7.0,SQL 2000中即故障恢复模型选择为简单模型)
当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True
Auto shrink
定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。

注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。

这里讲得很清楚,如果你是用ms sql server就可以按上面的方法解决
参考技术A 其实LOG日志增加很正常,数据库需要定期维护的.我是做数据库工作的.
清除日志的方法很多种,可以用收缩数据库,然后截断的办法,也可以像楼上说的直接分离删除日志,再重新键一个日志.
建议用收缩然后截断的办法,或者直接在网上下个日志清理小软件,都比较好.不建议直接删除日志的方法.
做数据库的人需要平时多用心,多去整理,这样的才能保证数据库的稳定和安全性.
参考技术B 看看日志文件是不是变大了,还有就是你新增的那2张表里的数据是不是有很多? 参考技术C 如果你改过字段类型或字段长度,很可能就出现这种情况

想问一下google脚本是如何工作的?

【中文标题】想问一下google脚本是如何工作的?【英文标题】:Would like to ask to how google scripts work? 【发布时间】:2021-01-02 12:34:53 【问题描述】:

嗨,我想把这个公式放在我的谷歌表中“=(C2 + 7/24 - DATE(1970,1,1)) * 86400000”,以将我的时间转换为纪元时间。每次我打开新文件时是否可以将其添加到谷歌脚本中,它会自动转换为纪元时间?谢谢!

【问题讨论】:

公式会自动重新计算。不需要脚本。有关脚本基础知识,请参阅 tag info page:搜索时间触发器,如果​​您对脚本感兴趣。 【参考方案1】:

您可以使用onOpen() 简单触发器来完成此操作。 “简单”,因为 Google 会自动设置触发器,只需在您的脚本中添加一个名为 onOpen() 的函数。

您确实需要定义要放置公式的位置。在这里,我写在Sheet1!A1

function onOpen(e) 
  e.source.getSheetByName('Sheet1').getRange('A1').setFormula('=(C1 + 7/24 - DATE(1970,1,1)) * 86400000');

【讨论】:

所以它会自动转换为纪元时间戳还是会填充另一行? @迭戈 @CoderTrainy 它将公式=(C1 + 7/24 - DATE(1970,1,1)) * 86400000 放入单元格A1 有没有办法可以在我的整个 A1 列中循环它?谢谢芽! @迭戈 @CoderTrainy 当然。 Apps 脚本允许您定义一个范围 (getRange()) 并一次设置一组值 (setValues()setFormulas())

以上是关于我想问一下为啥我的SQL数据库会一下子变了好几百兆呢的主要内容,如果未能解决你的问题,请参考以下文章

我想问一下,怎么导出SQlite数据库sql脚本啊,用C++实现

我想问一下为啥uc浏览器打不开网页

我想问一下为啥我下载的pdf文件打开后都是乱码?

我想问一下神通广大的各位网友,为啥我前端使用websocket通信的时候后台可以接收到我客户端发送的消息?

我想问一下,我从win7更新到win10之后 ,为啥我win7中的软件全没了?该怎么办

我想问一下,现在做一个后台管理系统,大多数用啥技术啊?.net?js?