<script type="text/javascript">
</script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
如果因为磁盘可用空间不足,而不能完成数据库的恢复,那么 SQLSERVER2000会返回错误1105并且将sysdatabases中的status列设为 置疑。
你可以看到在 SQLSERVER的ERRORLOG和OS的应用程序日志中应该有1105的错误信息:
SQLSERVER事务日志可能会被填满,这会阻止之后的数据库操作,包括UPDATE,DELETE,INSERT和CHECKPOINT。
事务日志填满会导致1105错误:
Can'tallocatespaceforobjectsyslogsindatabasedbnamebecause
thelogsegmentisfull。Ifyouranoutofspaceinsyslogs,dump
thetransactionlog。OtherwiseuseALTERDATABASEor
sp_extendsegmenttoincreasethesizeofthesegment。
这种现象可能出现于任何一个数据库中,包括Master和TempDB。一些难以预见的因素可能消耗日志空间。例如:
一个大型事务,尤其像批量数据更新、插入或删除。
一个未提交的事务。
检查点处理程序截除时所需的带宽过大。
截除时超过阈值
上述各种条件互相作用的结果。
用于发布的标记事务没有被日志读取程序读走
下面是 修复的步骤和收缩日志的步骤:
1.在命令提示符下运行以下命令启动 SQLSERVER:
SQLSERVER-f-m
备注:-m开关以单用户模式启动 SQLSERVER。在单用户模式下,只能成功建立一个连接。请注意是否有任何其他客户机或服务可能会在您通过 SQLSERVER查询分析器 建立连接前使用那个连接。
2. 重置 置疑数据库的状态。
sp_resetstatus'database_name'
下面是结果集:
Database'database_name'statusreset!WARNING:Youmustreboot SQLSERVERpriortoaccessingthisdatabase!
3.用ALTERDATABASE向数据库添加一个数据文件或日志文件:
USEmasterGOCREATEDATABASEdb_nameON(NAME=dbname_dat1,FILENAME='D://Data/dbname_dat1.ndf',SIZE=1000MB,FILEGROWTH=50MB)GO
--更改该数据库以添加一个2GB大小的新数据文件ALTERDATABASEdb_nameADDFILE(NAME=dbname_dat2,FILENAME='F:/MSSQL/DATA/dbname_dat2.ndf',SIZE=2000MB,FILEGROWTH=50MB)GO--更改该数据库以添加一个1GB大小的新日志文件ALTERDATABASEdb_nameADDLOGFILE(NAME=db_name_log2,FILENAME='F:/MSSQL/Data/db_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_dboption'databasename','trunc.logonchkpt.',true
sp_dboption'databasename','autoshrink',true上一页
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
如果因为磁盘可用空间不足,而不能完成数据库的恢复,那么 SQLSERVER2000会返回错误1105并且将sysdatabases中的status列设为 置疑。
你可以看到在 SQLSERVER的ERRORLOG和OS的应用程序日志中应该有1105的错误信息:
SQLSERVER事务日志可能会被填满,这会阻止之后的数据库操作,包括UPDATE,DELETE,INSERT和CHECKPOINT。
事务日志填满会导致1105错误:
Can'tallocatespaceforobjectsyslogsindatabasedbnamebecause
thelogsegmentisfull。Ifyouranoutofspaceinsyslogs,dump
thetransactionlog。OtherwiseuseALTERDATABASEor
sp_extendsegmenttoincreasethesizeofthesegment。
这种现象可能出现于任何一个数据库中,包括Master和TempDB。一些难以预见的因素可能消耗日志空间。例如:
一个大型事务,尤其像批量数据更新、插入或删除。
一个未提交的事务。
检查点处理程序截除时所需的带宽过大。
截除时超过阈值
上述各种条件互相作用的结果。
用于发布的标记事务没有被日志读取程序读走
下面是 修复的步骤和收缩日志的步骤:
1.在命令提示符下运行以下命令启动 SQLSERVER:
SQLSERVER-f-m
备注:-m开关以单用户模式启动 SQLSERVER。在单用户模式下,只能成功建立一个连接。请注意是否有任何其他客户机或服务可能会在您通过 SQLSERVER查询分析器 建立连接前使用那个连接。
2. 重置 置疑数据库的状态。
sp_resetstatus'database_name'
下面是结果集:
Database'database_name'statusreset!WARNING:Youmustreboot SQLSERVERpriortoaccessingthisdatabase!
3.用ALTERDATABASE向数据库添加一个数据文件或日志文件:
USEmasterGOCREATEDATABASEdb_nameON(NAME=dbname_dat1,FILENAME='D://Data/dbname_dat1.ndf',SIZE=1000MB,FILEGROWTH=50MB)GO
--更改该数据库以添加一个2GB大小的新数据文件ALTERDATABASEdb_nameADDFILE(NAME=dbname_dat2,FILENAME='F:/MSSQL/DATA/dbname_dat2.ndf',SIZE=2000MB,FILEGROWTH=50MB)GO--更改该数据库以添加一个1GB大小的新日志文件ALTERDATABASEdb_nameADDLOGFILE(NAME=db_name_log2,FILENAME='F:/MSSQL/Data/db_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_dboption'databasename','trunc.logonchkpt.',true
sp_dboption'databasename','autoshrink',true上一页
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>