TempDB损坏的处理
故障环境:WinNT4.0Cluster+SQL Server7.0
故障描述: 8:30左右发现资料库当机,cluster作移转后sql server无法起来,查看windows日志,有错误纪录如下
事件类型: 错误
事件来源: ClusSvc
事件类别目录: (2052)
事件识别码: 1066
日期: 2005-1-21
时间: 8:23:20
使用者: N/A
电脑: TEST
描述:
Cluster disk resource Disk G:: is corrupt. Running ChkDsk /F to repair problems.
请在http://go.microsoft.com/fwlink/events.asp 查看说明及支援中心,以取得其他资讯。
根据该错误纪录,需要对TEST\G做check disk.再对资料库做完整backup后,停止cluster服务,重起server后,chkdsk g: /f 执行成功.再次启动sql server,依旧无法开启,windows event log出下以下错误
事件类型: 资讯
事件来源: MSSQLServer$TEST
事件类别目录: Server
事件识别码: 17055
日期: 2005-1-21
时间: 8:23:54
使用者: N/A
电脑: TEST
描述:
17052 :Database ‘tempdb’ cannot be opened. It has been marked SUSPECT by recovery. See the SQL Server errorlog for more information.
请在http://go.microsoft.com/fwlink/events.asp 查看说明及支援中心,以取得其他资讯。
资料:
0000: 9c 42 00 00 0a 00 00 00 ?B……
…
0030: 00 00 ..
在Microsoft网站查找17055,10752的错误代码没有结果. 通过查找关键字“Database ‘tempdb’ cannot be opened”,找到重建TempDB的一篇文章http://support.microsoft.com/default.aspx?scid= kb;en-us;288809
处理方法: 根据微软文档,操作步骤如下
1.设置SQL Server Virtul Server Name
C:\> set _CLUSTER_NETWORK_NAME=YourSQLVirtualName
2.命令行启动SQL Server单用户模式(命令行窗口不能关闭)
C:\> sqlservr -c -f -T3608 -T4022
3.开启查询分析器,以SA登入,执行系统存储过程重设TempDB状态
exec master..sp_resetstatus Tempdb
4.按CTRL+C关闭第2步的命令行窗口
5.重新正常启动SQL Server,此时会自动重建TempDB
6.还原第1步的环境参数设置
C:\> set _CLUSTER_NETWORK_NAME=
至此,数据库恢复正常.
