第一种解决方法:
先删除报错数据库,再新建一同名数据库,然后暂停Service manager(及sql server 服务) ,删除库文件和日志文件再启动Service manager ,使用单数据文件恢复数据库命令恢复数据库。
例:打开sql server/tools/sql server query analyzer 执行下面 *** 作 EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\mssql7\data\pubs.mdf'
说明:‘pubs’为要恢复的数据库名称,‘c:\mssql7\data\pubs.mdf’为要恢复的数据库的库文件的具体路径和文件名称。
再重新启动一下service manager ,看能否正常打开处理后的数据库;如果不可以再使用第二种方案。
第二种解决方法:打开sql server/tools/sql server query analyzer 执行下面 *** 作
USE MASTER
GO
sp_configure 'allow update',1
RECONFIGURE WITH OVERRIDE
GO
UPDATE sysdatabases
set status = 32768
WHERE name = 'db_pos363'
GO
sp_configure 'allow update',0
RECONFIGURE WITH OVERRIDE
GO
说明:'db_pos363'是要修复的数据库名称。
执行完毕再重启一下Service manager打开数据库看是否处于紧急状态!再从另一装有sql 2000的机器上连接报错的数据库,然后再在sql 2000的机器上新建一数据库,再使用sql 2000自带的数据库导入导出功能(在新建的数据库上单击右键/所有任务/数据导入、数据导出)从报错数据库导入数据到新建的数据库中!
在导入选项中注意以下几项:
1, 导入方式选择分‘从源数据库复制表和视图’以及‘从sql server数据库间复制对象和数据’。当选择从源数据库复制表和视图时一定要选择全部表!
2, 当选择‘从sql server数据库间复制对象和数据’时,在‘导入导出向导’对话框中去除‘使用默认选项’的选中标志;再在打开‘选项’对话框,去除以下三项的选中标志。A,复制数据用户和数据库角色;B,复制sql server 登陆;C,复制对象及权限。
3, 在使用‘从sql server数据库间复制对象和数据’时,有时会出现单张表导入失败,这时有时会在导入结束时提示那几张表导入失败有时不提示,如果提示,就再使用‘从源数据库复制表和视图’并选中导入失败的表重新导入一遍;如果不提示就只能在一张张表打开查看了,发现空表后再使用‘从源数据库复制表和视图’导入需要导入的表!
导入成功后再删除sql server 7.0机器上处于紧急状态的数据库,再新建一个同名数据库,建好后再使用sql 2000的数据库导出功能导出到此数据库中,在导出过程中同样要注意导入时的注意事项
-----------------------------------
以上方法摘自网络,如造成不可预知的后果,本人概不负责
说明由于缺少文件或其他资源,因此无法访问数据库。
用户 *** 作
检查有关内存、磁盘空间或权限失败的其他信息的错误日志。确认受影响数据库的 .mdf 和 .ndf 文件的位置,并确认由数据库引擎使用的帐户拥有访问这些文件的权限。更正问题后,使用 ALTER DATABASE 将数据库设置为 ONLINE,从而重新启动数据库。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)