作业帮 > 体裁作文 > 教育资讯

日记mssql版

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/22 10:36:51 体裁作文
日记mssql版体裁作文

篇一:SQL SERVER 日志已满的处理方法

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

日记mssql版

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 时才能进行。

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

/***************************************/

今天早上一看服务器硬盘没有空间了,细查数据库日 志达18G 运行上次在网上找的文章修改数据库日志大小,,提示”数据库city日志已满。请备份该数据库的事务日志以释放一些日志空间。” 网上查了下相关资料,找到下面这个最好用的,把原来的18g数据库日志文件压缩到了100M 效果非常明显.(本人只试过了前三步就OK了,后面的方法未验证)

–压缩日志及数据库文件大小

/*–特别注意

请按步骤进行,未进行前面的步骤,请不要做后面的步骤

否则可能损坏你的数据库.

–*/

1.清空日志

DUMP TRANSACTION 库名 WITH NO_LOG

2.截断事务日志:

BACKUPLOG数据库名WITHNO_LOG

3.收缩数据库文件(如果不压缩,数据库的文件不会减小

企业管理器–右键你要压缩的数据库–所有任务–收缩数据库–收缩文件 –选择日志文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

–选择数据文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

也可以用SQL语句来完成

–收缩数据库

DBCCSHRINKDATABASE(客户资料)

–收缩指定数据文件,1是文件号,可以通过这个语句查询

到:select*fromsysfiles

DBCCSHRINKFILE(1)

4.为了最大化的缩小日志文件(如果是sql7.0,这步只能在查询分析器中进行)

a.分离数据库:

企业管理器–服务器–数据库–右键–分离数据库

b.在我的电脑中删除LOG文件

c.附加数据库:

企业管理器–服务器–数据库–右键–附加数据库

此法将生成新的LOG,大小只有500多K

或用代码:

下面的示例分离pubs,然后将pubs中的一个文件附加到当前服务器。

a.分离

EXECsp_detach_db@dbname=?pubs?

b.删除日志文件

c.再附加

EXECsp_attach_single_file_db@dbname=?pubs?, @physname=?c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\pubs.mdf?

5.为了以后能自动收缩,做如下设置:

企业管理器–服务器–右键数据库–属性–选项–选择”自动收缩” –SQL语句设置方式:

EXECsp_dboption?数据库名?,?autoshrink?,?TRUE?

6.如果想以后不让它日志增长得太大

企业管理器–服务器–右键数据库–属性–事务日志

–将文件增长限制为xM(x是你允许的最大数据文件大小)

–SQL语句的设置方式:

alterdatabase数据库名modifyfile(name=逻辑文件名,maxsize=20)

篇二:几种清除MSSQL日志的方法

方法一、

MS SQL清除日志的命令

如何清除sql server 日志?

设置数据库为简单模式,自动收缩

1.打开查询分析器,输入命令

backup log databasename with no_log

2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

dbcc shrinkfile (databasename_log,truncateonly)

方法三、

1: 删除LOG

第1步:分离数据库 企业管理器->服务器->数据库->右键->分离数据库

第2步:删除LOG文件

第3布:附加数据库 企业管理器->服务器->数据库->右键->附加数据库

此法生成新的LOG,大小只有500多K

再将此数据库设置自动收缩

方法四、

EXEC sp_detach_db @dbname = 'pubs'

EXEC sp_attach_single_file_db @dbname = 'pubs',

@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

方法五、

Use Database_Name

Backup Log Database_Name With No_log

dbcc shrinkfile (Database_Name_Log,truncateonly)

Go

直接在查询分析那里执行backup log databasename with no_log

然后回到企业管理器把数据库收缩一下(可能需另外设置属性)

如果以后,不想要它变大。

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 时才能进行。

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

篇三:SQL服务器的日志增长过快

SQL服务器的日志增长过快

问题:在C盘空间不足的情况下, C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG下的你每天增大,大量的占用C盘的空间。

在 APACS OS 版本 6.1 中,ErrorLog 文件保存在 c:/Program Files/Microsoft SQL Server/MSSQL$WINCC/LOG 文件夹中。

在 APACS OS 版本 7.0 中,ErrorLog 文件保存在 c:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/LOG 文件夹中。

原因分析:如果很少重起mssqlserver服务,那么服务器的日志会增长得很快(每天通过重启机器启动SQL服务,好像不起作用,目前没找到原因),而且打开和查看日志的速度也会很慢。默认情况下,SQL Server 保存 7 个 ErrorLog 文件,名为:

ErrorLog

ErrorLog.1

ErrorLog.2

ErrorLog.3

ErrorLog.4

ErrorLog.5

ErrorLog.6

ErrorLog 文件包含最新信息;ErrorLog.6 文件包含最老的信息。每次重启动 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 文件中。

如果其中一个 ErrorLog 文件已很大,则可通过运行 sp_cycle_errorlog 存储过程手动循环这些 ErrorLog 文件,或者通过重启服务循环这些 ErrorLog 文件,或者执行Exec('DBCC ErrorLog') 使用DBCC errorlog命令来操作循环这些 ErrorLog 文件。

将sp 放在Job中定期执行。

create procedure sp_cycle_errorlog

if (not (is_srvrolemember('sysadmin') = 1)) -- Make sure that it is the SA executing this. begin

raiserror(15247,-1,-1)

return(1)

end

dbcc errorlog

return (0)

GO

使用这些命令,可以截断当前的服务器日志,主要是生成一个新的日志。执行6次从而起到清除SQL服务器日志的作用。

体裁作文