|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
根据Evans的调查报告,“MySQL的使用在未来将继续呈成长趋势。”server|sqlserver|数据|数据库|置疑
假如SQLServer由于磁盘可用空间不敷,而不克不及完成数据库的恢复,那末SQLServer2000会前往毛病1105而且将sysdatabases中的status列设为置疑。
你能够看到在SQLSERVER的ERRORLOG和OS的使用程序日记中应当有1105的毛病信息:
SQLServer事件日记大概会被填满,这会制止以后的数据库操纵,包含UPDATE,DELETE,INSERT和CHECKPOINT。
事件日记填满会招致1105毛病:
Cantallocatespaceforobjectsyslogsindatabasedbnamebecause
thelogsegmentisfull。Ifyouranoutofspaceinsyslogs,dump
thetransactionlog。OtherwiseuseALTERDATABASEor
sp_extendsegmenttoincreasethesizeofthesegment。
这类征象大概呈现于任何一个数据库中,包含Master和TempDB。一些难以预感的要素大概损耗日记空间。比方:
一个年夜型事件,特别像批量数据更新、拔出或删除。
一个未提交的事件。
反省点处置程序截除时所需的带宽过年夜。
截除时凌驾阈值
上述各类前提相互感化的了局。
用于公布的标志事件没有被日记读取程序读走
上面是修复的步骤和压缩日记的步骤:
1.在命令提醒符下运转以下命令启动SQLServer:
SQLSERVER-f-m
备注:-m开关以单用户形式启动SQLServer。在单用户形式下,只能乐成创建一个毗连。请注重是不是有任何其他客户机或服务大概会在您经由过程SQLServer查询剖析器创建毗连前利用谁人毗连。
2.重置置疑数据库的形态。
sp_resetstatusdatabase_name
上面是了局集:
Databasedatabase_namestatusreset!WARNING:YoumustrebootSQLServerpriortoaccessingthisdatabase!
3.用ALTERDATABASE向数据库增加一个数据文件或日记文件:
USEmasterGOCREATEDATABASEdb_nameON(NAME=dbname_dat1,FILENAME=D:MSSQLDatadbname_dat1.ndf,SIZE=1000MB,FILEGROWTH=50MB)GO
--变动该数据库以增加一个2GB巨细的新数据文件ALTERDATABASEdb_nameADDFILE(NAME=dbname_dat2,FILENAME=F:MSSQLDATAdbname_dat2.ndf,SIZE=2000MB,FILEGROWTH=50MB)GO--变动该数据库以增加一个1GB巨细的新日记文件ALTERDATABASEdb_nameADDLOGFILE(NAME=db_name_log2,FILENAME=F:MSSQLDatadb_name_log2.ldf,SIZE=1000MB,FILEGROWTH=20MB),GO
4.中断偏重新启动SQLServer:
用新的数据文件或日记文件所供应的分外空间,SQLServer应当能完成数据库的恢复。
5.开释磁盘空间而且从头运转恢复操纵,依照上面的步骤压缩日记。
sp_resetstatus封闭数据库的置疑标记,可是一成不变地坚持数据库的别的选项。
为从基本上办理如许的成绩,你能够按上面的操纵设置SQLSERVER2000:
a.假如不必要恢复到指定的工夫点,你能够将数据库的恢复形式设置为复杂,如许
UPDATE,DELETE,SELECT就不会纪录日记,日记就不会增添的很年夜:
USEMASTER
GO
ALTERDATABASEDB_NAMESETRECOVERYSIMPLE
b.假如你的恢复形式是全体,你必定要设置日记字段压缩:
USEMASTER
GO
sp_dboptiondatabasename,trunc.logonchkpt.,true
sp_dboptiondatabasename,autoshrink,true
c.经由过程逐日备份将日记压缩:
BACKUPDATABASEDATABASE_NAMETOBACKUP_DEVICES
BACKUPLOGDATABASE_NAMETOLOG_DEVICES
OR
BACKUPLOGDATABASE_NAMEwithtruncate_only
**反省日记的容量:DBCCSQLPERF(LOGSPACE)这时候日记并没有压缩!
d.天天在备份数据库完成以后,从头启动MSSQLSERVERSERVICE.
USEDATABASE_NAME
go
DBCCSHRINKFILE(2,truncateonly)
**反省日记的容量:DBCCSQLPERF(LOGSPACE)这时候日记已压缩!
e.手动疾速压缩日记:
/*runbelowscript,youwillshrinkyoudatabaselogfiles
immediately,inmyexperience,youneedtorunthescriptfor3or
4minutesbeforestoppingitmanually*/
usedatabasename
dbccshrinkfile(2,notruncate)
dbccshrinkfile(2,truncateonly)
createtablet1(char1char(4000))
go
declare@iint
select@i=0
while(1=1)
begin
while(@i<100)
begin
INSERTINTOT1VALUES(A)
SELECT@I=@I+1
END
TRUNCATEtableT1
BACKUPLOGyoudatabasenamewithtruncate_only
end
GO
注重只要在您的次要撑持供应者引导下或有疑问解答倡议的做法时,才可使用
sp_resetstatus。不然,大概会破坏数据库。
因为该历程修正了体系表,体系办理员必需在运转sp_resetstatus这个历程前,启用体系表更新。要
启用更新,利用上面的历程:
USEmaster
GO
sp_configureallowupdates,1
GO
RECONFIGUREWITHOVERRIDE
GO
历程创立后,当即禁用体系表更新:
sp_configureallowupdates,0
GO
RECONFIGUREWITHOVERRIDE
GO
只要体系办理员才干实行sp_resetstatus。实行该历程后,当即封闭SQLServer。
请参考:
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;317375
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;307775
MySQLAB公司的一个高级开发者者表示,“这个特点使得MySQL可以根据你当前的系统的需要来进行调整。” |
|