SQL Server的数据库损坏了怎么办?

Location: recbase.cpp:1375 Expression: m_offBeginVar < m_SizeRec SPID: 51 Process ID: 1192
/mail/include/class_database.asp А 735


如果您遇到上面的错误,说明SQL Server的数据库损坏了。这个问题到目前为止(2008/11/25)共有2位客户遇到,当时的状况是:Outlook能够正常收发邮件,但Webmail访问时一点登录就出现上述错误信息。

为什么数据库会损坏? 这个原因会有很多,例如突然断电、磁盘坏了等,具体到您这里是什么原因,这得要问微软公司才能知道了。DB Mail Server只是通过ADO标准接口来访问数据库,用的是标准的SQL语句,没有任何对数据库进行破坏性的操作。DB Mail Server的可能就就在于访问数据库的量会大一些,类似于BT下载多了硬盘可能出错一样。

出现这个问题,我们试过用SQL Server的DBCC检查等手段进行修复,发现修复不了,查询了Google很久也没有找到有什么解决办法(欢迎您也查询Google寻找方案)。如果您有备份,优先建议您删除这个数据库,用备份的版本进行恢复;如果您没有备份,可以试试新建数据库来导入原来的数据(下面的处理过程不会破坏系统和数据)。

第1步. 关闭目前的DBMail. 假设目录在C:DBMailPro.

第2步. 按如下的指导,再安装一个新的DBMail:
1) 运行 dbmailsetup.exe安装包, 安装到C:DBTemp.
2) 运行C:DBTemp下的aamailsvr.exe,此时会显示初次设置向导。
3) 在向导中选择SQL已经安装, 在输入SQL参数时, 选中"改变缺省参数".
4) 把数据库名称改为 dbmail,这时数据库文件会为C:DBTempdbsdbmail.mdf.
5) 下一步,取消“启动Webmail”.
6) 下一步至安装完成,启动主界面, 然后退出。

第3步. 进入SQL Server企业管理器,将有dbmail数据库,下面进行数据复制:
1) 右键选择dbmail数据库,选择任务中的DTS数据导入.
2) 选择从dbmailpro导入数据,用Windows集成验证模式.
3) 选择表=>表的复制方式,选择全部表,复制并覆盖数据.
4) 执行数据复制.

数据的复制成功与否,是本次操作的关键。如果有不成功的,那么就得一个一个表进行尝试,来看具体原因是什么。如果一些重要的表不的数据复制不成功,那么这个方法就失效了:ldap, domaininfo, monitorinfo, mailreceive, webreceive, webrecvattach, mailsummary。数据复制成功以后,才继续下一步。

第4步. 在SQL企业管理器中,右键选择dbmail数据库,执行“任务=>分离”,把dbmail数据库分离。

第5步. 把C:DBTempdbsdbmail.mdf和dbmail.ldf移动到C:DBMailProdbs目录中.

第6步. 打开C:DBMailProaamailsvr.ini文件, 修改[Database]段中以下值:
DatabaseName = dbmail
DatabaseFile = c:DBMailProdbsdbmail.mdf

第7步
. 在企业管理器中, 选择“任务=>附加”,附加入C:DBTempdbsdbmail.mdf.

第8步. 启动C:DBMailPro下的aamailsvr.exe,此时DBMail应该能够正常运行了。

第9步. 恢复成功,最后进行清理:
1) C:DBTemp文件夹可以全部删除.
2) dbmailpro数据库可以在企业管理器中分离,移动到别的地方暂时备份起来。

2012-11-15 05:35
邮件服务器DBMail
邮件服务器DBMail V5.0 (更新2018.05.23)
Download
DBMail产品改良计划
完美的产品体验,需要有您的参与。
在线填写,立即参与
界面/演示
界面美观大方、简单易用。
界面预览
邮件服务器DBMail  |  购买DBMail  |  软件更新  |  网站更新  |  联系遥志  |  站点地图  |  邮件服务器相关  |  代理合作
遥志软件 版权所有(C)2000-2022 湘ICP备13011306号-3 湘公网安备 43010202000264号
Copyright(C) 2000-2022 Youngzsoft Inc. All Rights Reserved.