解决供水SQLServer服务器ERRORLOG太大导致C盘满的故障
- 格式:docx
- 大小:16.39 KB
- 文档页数:2
SQL Server ERRORLOG过大处理办法本期概述●本文档适用于 K/3 所有版本●本文档针对数据库运行性能进行讲解,通过本文档的学习可以了解当数据库SQLServer 出现错误日志ERRORLOG文件过大时的处理方法版本信息●2013年02月27日 V1.0 编写人:卢锦煌●2013年02月28日 V2.0 审核人:崔志佳版权信息●本文件使用须知著作权人保留本文件的内容的解释权,并且仅将本文件内容提供给阁下个人使用。
对于内容中所含的版权和其他所有权声明,您应予以尊重并在其副本中予以保留。
您不得以任何方式修改、复制、公开展示、公布或分发这些内容或者以其他方式把它们用于任何公开或商业目的。
任何未经授权的使用都可能构成对版权、商标和其他法律权利的侵犯。
如果您不接受或违反上述约定,您使用本文件的授权将自动终止,同时您应立即销毁任何已下载或打印好的本文件内容。
著作权人对本文件内容可用性不附加任何形式的保证,也不保证本文件内容的绝对准确性和绝对完整性。
本文件中介绍的产品、技术、方案和配置等仅供您参考,且它们可能会随时变更,恕不另行通知。
本文件中的内容也可能已经过期,著作权人不承诺更新它们。
如需得到最新的技术信息和服务,您可向当地的金蝶业务联系人和合作伙伴进行咨询。
著作权声明著作权所有 20xx金蝶软件(中国)有限公司。
所有权利均予保留。
目录1. 应用场景分析 (3)2. 解决方案 (5)2.1 手动执行存储过程清除 (6)2.2 定期执行存储过程清除 (7)1. 应用场景分析客户通常会将SQL Server数据库软件安装在系统盘目录中,然而当系统运行一段时间以后,可能会出现系统盘空间资源被耗尽的情况,此时检查发现SQL Server安装目录LOG 文件夹下的ERRORLOG文件已经达到几十个GB的大小,占去了系统盘的大部分空间,影响系统的正常运行。
ERRORLOG文件记录了数据库的错误日志信息,例如自动备份不成功或者数据库登录失败产生的信息等。
sql server日志已满处理方法sql server日志已满处理方法学习2009-07-2615:42:33阅读323评论0字号:大中小SQL数据库日志文件太大,或者使用软件时提示日志已满的处理方法.sql出现这种题提示,有二种情况,一你的电脑存放数据库文件的盘符不是NTFS格式的,而是别的格式,如FAT32只支持一个文件最大4G,所以超过4G就没有办法再写文件,sql 就会提示日志文件已满.另外就是NTFS格式的,前台见一个卖服装的朋友店里数据库主文件只有100多M,而日志文件却有40G,幸亏是他的硬盘空间多,不然软件早不能用了.估计软件数据库设计的有问题.后来给他重新建了一个日志收银速度明显加快.一--在SQL查询分析器执行--按下边的步骤一步一步的做--删除日志前要先对以前的数据库进行备份(这一步必须做,已免数据出现丢失)--1、使数据库脱机use masterexec sp_Detach_db test,true--2、把对应的.ldf文件删除或改名--需手工做自己手工删除数据库文件的所在目录下的.ldf文件--3、加载数据文件exec sp_attach_single_file_db test,'D:\Program Files\Microsoft SQL Server\MSSQL\Data\test_Data.MDF'--4设置日志文件的增长方式alter database test set recovery simple二1.清空日志DUMP TRANSACTION库名WITH NO_LOG2.截断事务日志:BACKUP LOG数据库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select*from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后将pubs中的一个文件附加到当前服务器。
MSSQLServer占用过多内存的解决方法SQL Server 2008 或者R2的默认内存分配是2147483647MB, 差不多算是无穷大,对于系统内存的管理策略是有多少占多少,除非系统内存不够用了大约到剩余内存为4M左右,SQL Server才会释放一点点内存;所以很多时候,我们会发现运行Sql Server的系统内存往往居高不下;SQLserver会把所有处理过的SQL操作缓存在内存里,这样就不用总去读硬盘了;例如你运行一个SELECT 语句,那么SQL Server会将相关的数据页SQL Server操作的数据都是以页为单位的加载到内存中来,下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度;这类的缓存叫做数据缓存;还有一些其他类型的缓存,如执行存储过程时,Sql Server需要先编译再运行,编译后的结果也会缓存起来,下一次就无需再次编译了;但是如果长时间运行SQL Server, 系统内存被用的差不多,再开启其他程序就有可能会报内存不足,因此需要清理内存占用;方法1:定期重启下SQL Server 数据库服务,使用任务计划定期执行下边批处理:net stop sqlserveragentnet stop mssqlservernet start mssqlservernet start sqlserveragent这种方法最简单有效,但是只能临时的清除SQLServer缓存所占的内存空间,时间长了SQLServer还会把内存占满;而且很重要的是这种方法不能在SQLserver有连接的情况下使用,那样会让正在使用SQLServer的用户暂时无法连接SQLServer,甚至导致程序处错误;方法2:进入Sql server 企业管理器,在数据库服务器名称上点击右键--属性--内存,在右边的使用AWE分配内存sqlServer64的应该不用勾左边把对勾打上; 在最大服务器内存MB上填入适当的大小,点确定,重启一下Sql服务方法3:use masterselect lock_timeoutset lock_timeout 900000-- 15分钟select lock_timeout设置数据库每隔15分钟回收闲下来的进程,可以把时间设的短一些方法4:从过程高速缓存中删除所有元素2000里面可以用DBCC UNPINTABLE,但这个操作不会立即释放表内存Buffer2005/2008能够更自由的对SQL所占用的内存空间做处理如DBCC FREEPROCCACHEDBCC FREESESSIONCACHEDBCC FREESYSTEMCACHE&39;All&39;DBCC DROPCLEANBUFFERS这几个命令分别用来清除存储过程相关的缓存、会话缓存、系统缓存以及所有所有缓存;以上几个命令一般能释放缓存;但是有的时候不是很管用,因为虽然SQLserver会清除掉现有缓存,为新的缓存腾地方,但是不会因为Cache缓存释放了而释放已经占用的内存,此命令只会让SQLServer不会继续占领新的内存,无奈的是,Sql Server并没有提供任何命令允许我们释放不用到的内存;因此我们只能通过动态调整Sql Server可用的物理内存设置来强迫它释放内存USE masterGOEXEC sp_configure &39;show advanced options&39;, 1--开启advanced options设置开关GOEXEC sp_configure &39;max server memory&39;, 5120--最大内存调整为5GB EXEC &39;RECONFIGURE&39;WAITFOR DELAY &39;00:00:05&39;EXEC sp_configure &39;max server memory&39;, 20480--最大内存调整为20GBEXEC &39;RECONFIGURE&39;GOEXEC sp_configure &39;show advanced options&39;, 0--关闭advanced options设置开关GO。
mssql还原数据库提示磁盘空间不足解决
今天还原数据库,备分文件5G左右。
但是还原时提示112错误,提示磁盘空间不足,我的C盘空间明显足够,,所以上网查下,总结如下,并最终解决问题。
首先可能备份日志文件太大,所以硬盘放不下这时候先清空
日志用以下sql语句
DUMP TRANSACTION 库名 WITH NO_LOG
1、你的SQL Server版本,个人版有2GB限制。
2、检查磁盘的文件格式,如果是FAT32,转换为NTFS格式。
FAT32转NTFS的方法:
不需要格式化,运行:输入命令convert c:/fs:ntfs
其中,c为盘符
只要这样就可以把文件系统重FAT32转NTFS了!
原因是:FAT32不支持大于2G的单个文件。
当然做着写之前你要确保你的sql数据文件在C盘如果不在C盘那就把对应的盘改为ntfs 的
或者直接把数据库对应的mdf和ldf文件移动到C盘都可以。
然后在还原,问题解决。
吃饭去。
SQLServer2008R2占⽤cpu、内存越来越⼤的两种解决⽅法SQL Server 2008 R2运⾏越久,占⽤内存会越来越⼤。
第⼀种:有了上边的分析结果,解决⽅法就简单了,定期重启下SQL Server 2008 R2数据库服务即可,使⽤任务计划定期执⾏下边批处理:net stop sqlserveragentnet stop mssqlservernet start mssqlservernet start sqlserveragent第⼆种:进⼊Sql server 企业管理器(管理数据库和表的,这个都不知道就不⽤往下看了),在数据库服务器名称上点击【右键】,选择【属性】,然后,找到【内存】选项,在右边的【使⽤AWE分配内存】(sqlServer64的应该不⽤勾)左边把对勾打上。
在最⼤服务器内存(MB)上填⼊适当的⼤⼩(具体填多⼤,肯定不能超过计算机的物理内存,当然,也可以在任务管理器中查⼀下,sqlserver.exe占有多⼤时,系统会变慢作为参考),记得是以M(兆)为单位,点确定,重启⼀下Sql服务器!OK!解决SQL Server CPU占⽤率⾼SQL Server CPU占⽤率⾼,⼀般是因为查询数据量⼤,执⾏时间长造成的。
这⾥提供调试⽅法,⽅便找出异常sql1、打开SQL Server Profiler2、新建跟踪a.点击新建跟踪,并设置好数据库连接b.设置跟踪属性,选择模板“Standard”c.切到“事件选择”进⾏跟踪设置1)只保留如下两个事件选项2)点击列筛选3)进⾏详细筛选设置设置CPU时间作为筛选条件,单位毫秒(⽤于跟踪耗CPU占⽤较长的查询,可设置为⼤于等于20000,按CPU内核数×1000,可以跟踪CPU占⽤100%⼤于1秒的查询)3、点击运⾏,跟踪语句,定位CPU占⽤较多的语句如下图所⽰,CPU占⽤2660146毫秒,CPU为24 核,则⾄少CPU占⽤100%耗时2660146/24/1000 = 110秒才可以执⾏好相应的操作4、根据语句特征,在你的服务器程序中找到相应的功能,作出修正4.1) 分析查询中需要检索数据量较⼤的部分,作出简单修正(如注销)4.2) 更新后重新执⾏此查询,查看profiler中是否CPU占⽤消失4.3) 如果已消失说明问题定位正确,可以优化查询,若CPU占⽤任然很多,则回滚修改,继续4.1操作补充资料:SQL Server 2008 R2运⾏越久,占⽤内存会越来越⼤。
解决供水SQLServer服务器ERRORLOG太大导致C盘满的故障今日供水打电话,说C盘满了,日志太多,登陆后查看,发现sqlserver日志中有是大量的登陆错误,sqlserver的log目录中有一个ERRORLOG达到23GB,最小的4GB,把C盘堆满了,立即采取以下措施:1.登陆虚拟化平台,对此虚拟服务器进行快照;2.用户需要保留此文件,所以将LOG目录整体备份到D盘;3.打开SQL Server Management,启动查询窗口,写入语句exec sp_cycle_errorlog;然后点击执行,共执行6次;3.查看ERRORLOG文件,已经是新的了,C盘腾出了30GB空间,系统恢复正常;以下为本次故障解决的参考资料默认情况下,sql server保存 7 个 ErrorLog 文件,名为:ErrorLogErrorLog.1ErrorLog.2ErrorLog.3ErrorLog.4ErrorLog.5ErrorLog.61.远程服务器中数据库的D盘空间不足。
查看之后就只有一个数据库,一个sqlServer05.一个数据库XX文件夹。
一个VS文件夹。
可以转移的文件都已经作了转移。
然后查看后发现sqlServer05文件夹log下面有很多错误日志2.这时候不可以随便全部删掉。
因为默认情况下,SQL Server 保存 7 个 ErrorLog 文件,名为:ErrorLogErrorLog.1ErrorLog.2ErrorLog.3ErrorLog.4ErrorLog.5ErrorLog.63.每次重启动 SQL Server 时,这些日志文件都如下循环:删除 ErrorLog.6 文件中的所有数据,并创建一个新的 ErrorLog 文件。
上个 ErrorLog 文件中的所有数据被写入到 ErrorLog.1 文件中。
上个 ErrorLog.1 文件中的所有数据被写入到 ErrorLog.2 文件中。
sqlserver事务⽇志已满的⼏种解决⽅案⼀.删除⽇志⽂件:(不建议)⼆.⼿动收缩:1.数据库右键属性-选项-恢复模式-下拉选择简单-最后点击确定2.右键数据库-任务-收缩-⽂件类型-下拉选择⽇志-收缩操作-在释放未使⽤....(默认收缩到1MB)-最后点击确定3.最后别忘了回到第⼀步骤把恢复模式改为完整!三.⾃动收缩:1.为了以后能⾃动收缩,做如下设置:企业管理器–服务器–右键数据库–属性–选项–选择”⾃动收缩”QL语句设置⽅式:EXEC sp_dboption ‘数据库名’, ‘autoshrink’, ‘TRUE’2..如果想以后不让它⽇志增长得太⼤企业管理器–服务器–右键数据库–属性–事务⽇志–将⽂件增长限制为xM(x是你允许的最⼤数据⽂件⼤⼩)–SQL语句的设置⽅式:alter database 数据库名 modify file(name=逻辑⽂件名,maxsize=20)四.分离附加:分离主数据库-删除.ldf⽂件-附件数据库;五.使⽤sql语句:(可设置为计划)--将数据库设为简单模式。
⽇志⽂件⾃动断开。
alter database dbname set recovery simple--查看⽇志⽂件状况use dbnamedbcc shrinkfile('logname') --like XXXX_log--恢复数据库模式alter database dbname set recovery full六.备份⽇志:SQL Server 2008 先备份⽇志将⽇志截断.再⽤dbcc shrinkfile(⽇志⽂件,1024)收缩⽇志⽂件。
七.设置简单模式:设置为简单模式不记录⽇志;⼋.sql⾃动缩减⽇志:针对⽇志这个问题,建议⼿动写个⼩⼯具(SQL提供⾃动缩减⽇志的脚本写法),添加到任务计划中,定时执⾏!可以节省很多磁盘空间!。
SQL Server 2014 是一款功能强大的关系型数据库管理系统,广泛应用于企业级应用程序和数据存储中。
在使用 SQL Server 2014 过程中,经常会遇到主数据库日志文件过大的问题,这会影响数据库性能和稳定性。
本文将介绍主数据库日志文件过大的处理方法,帮助数据库管理员和开发人员解决这一常见问题。
1. 分析日志文件过大的原因主数据库日志文件过大通常是由于以下原因引起的:1) 未及时备份日志文件2) 长时间未进行事务日志的截断3) 数据库中存在大量的大事务操作4) 数据库的恢复模式设置不当5) 数据库中存在大量的事务日志记录2. 备份日志文件备份日志文件是解决主数据库日志文件过大问题的最直接和有效的方法。
通过定期备份日志文件,可以将事务日志记录的信息写入到数据库文件中,并且释放已经写入到数据库文件中的空间。
数据库管理员可以使用 SQL Server Management Studio 工具或者 Transact-SQL 语句来备份日志文件,具体操作步骤如下:1) 使用 SQL Server Management Studio 工具进行备份:选择数据库 -> 右键点击任务 -> 选择“备份” -> 在“备份类型”中选择“日志” -> 完成备份设置 -> 确认备份操作2) 使用 Transact-SQL 语句进行备份:执行如下命令BACKUP LOG database_name TO disk='backup_location'3. 收缩日志文件在备份日志文件之后,数据库管理员还可以通过收缩日志文件的方式来释放空间,具体操作步骤如下:1) 使用 SQL Server Management Studio 工具进行日志文件收缩:选择数据库 -> 右键点击任务 -> 选择“任务” -> 选择“收缩” -> 选择“文件” -> 完成收缩操作2) 使用 Transact-SQL 语句进行日志文件收缩:执行如下命令DBCC SHRINKFILE(logical_log_filename, target_size)4. 截断事务日志截断事务日志是指将事务日志记录的信息写入到数据库文件中,并且释放已经写入到数据库文件中的空间。
sql server analysis service 内存不足的解决方法【最新版3篇】目录(篇1)1.SQL Server Analysis Service 内存不足的问题2.解决内存不足的方法3.总结正文(篇1)一、SQL Server Analysis Service 内存不足的问题在使用 SQL Server Analysis Service 时,可能会遇到内存不足的问题,从而导致服务无法正常运行。
这种情况下,我们需要寻找合适的解决方案来解决内存不足的问题。
二、解决内存不足的方法1.调整服务启动参数在启动 SQL Server Analysis Service 时,可以设置一些参数来调整内存的使用。
例如,可以设置 MAXDOP(最大并行度)参数来限制同时运行的查询数量,从而减少内存的使用。
2.增加内存缓存在内存不足的情况下,可以尝试增加内存缓存来提高 SQL Server Analysis Service 的运行效率。
这可以通过修改注册表中的相应键值来实现。
例如,可以修改"MemoryPoolSize"键值来增加内存缓存大小。
3.优化查询检查您的查询语句,确保它们是高效的。
避免使用子查询、多表连接等可能导致内存使用增加的查询方式。
同时,可以考虑将大表分割成小表,以减少查询时的内存占用。
4.升级硬件如果内存不足的问题仍然存在,可以考虑升级硬件,增加服务器的内存容量。
这可以有效地解决内存不足的问题,提高 SQL Server Analysis Service 的运行效率。
5.联系技术支持如果以上方法都无法解决内存不足的问题,建议联系 SQL Server 的技术支持,寻求专业帮助。
三、总结当遇到 SQL Server Analysis Service 内存不足的问题时,可以通过调整服务启动参数、增加内存缓存、优化查询、升级硬件等方式来解决。
目录(篇2)1.SQL Server Analysis Service 内存不足的问题2.解决内存不足的方法3.总结正文(篇2)一、SQL Server Analysis Service 内存不足的问题SQL Server Analysis Service 是 SQL Server 的一个重要组件,它可以帮助用户对数据进行分析和挖掘。
解决供水SQLServer服务器ERRORLOG太大导致C盘满的故障
今日供水打电话,说C盘满了,日志太多,登陆后查看,发现sqlserver日志中有是大量的登陆错误,sqlserver的log目录中有一个ERRORLOG达到23GB,最小的4GB,把C盘堆满了,立即采取以下措施:
1.登陆虚拟化平台,对此虚拟服务器进行快照;
2.用户需要保留此文件,所以将LOG目录整体备份到D盘;
3.打开SQL Server Management,启动查询窗口,写入语句
exec sp_cycle_errorlog;
然后点击执行,共执行6次;
3.查看ERRORLOG文件,已经是新的了,C盘腾出了30GB空间,系统恢复正常;
以下为本次故障解决的参考资料
默认情况下,sql server保存 7 个 ErrorLog 文件,名为:
ErrorLog
ErrorLog.1
ErrorLog.2
ErrorLog.3
ErrorLog.4
ErrorLog.5
ErrorLog.6
1.远程服务器中数据库的D盘空间不足。
查看之后就只有一个数据库,一个sqlServer05.一个数据库XX文件夹。
一个VS文件夹。
可以转移的文件都已经作了转移。
然后查看后发现sqlServer05文件夹log下面有很多错误日志
2.这时候不可以随便全部删掉。
因为默认情况下,SQL Server 保存 7 个 ErrorLog 文件,名为:
ErrorLog
ErrorLog.1
ErrorLog.2
ErrorLog.3
ErrorLog.4
ErrorLog.5
ErrorLog.6
3.每次重启动 SQL Server 时,这些日志文件都如下循环:
删除 ErrorLog.6 文件中的所有数据,并创建一个新的 ErrorLog 文件。
上个 ErrorLog 文件中的所有数据被写入到 ErrorLog.1 文件中。
上个 ErrorLog.1 文件中的所有数据被写入到 ErrorLog.2 文件中。
上个 ErrorLog.2 文件中的所有数据被写入到 ErrorLog.3 文件中。
上个 ErrorLog.3 文件中的所有数据被写入到 ErrorLog.4 文件中。
上个 ErrorLog.4 文件中的所有数据被写入到 ErrorLog.5 文件中。
上个 ErrorLog.5 文件中的所有数据被写入到 ErrorLog.6 文件中。
4.这时候只要在数据库查询窗口中对指令的数据库执行6次sp_cycle_errorlog命令。
就可以清理垃圾数据,填出很多空间。
5.像我就一次性填出了18G的空间。
注意事项:旧的 ErrorLog 文件中的数据将被覆盖!如果必须保存旧的 ErrorLog 文
件中的数据,则可将这些旧的 ErrorLog 文件复制到某个外部存储介质中。
在 APACS OS 版本 7.0 中,可从 SQL Server Management St io 运
行sp_cycle_errorlog存储过程。
所以需要定期能切换写入error log . 一般可以使用DBCC errorlog命令来操作。
Exec('DBCC ErrorLog') 或 exec sp_cycle_errorlog
或者可以通过以下命令,将sp 放在Job中定期执行。