执行 sp_resetstatus。 用 ALTER DATABASE 向数据库添加一个数据文件或日志文件。 停止并重新启动 SQL Server。 用新的数据文件或日志文件所提供的额外空间,SQL Server 应该能完成数据库的恢复。释放磁盘空间并且重新运行恢复操作。 sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。注意 只有在您的主要支持提供者指导下或有疑难解答建议的做法时,才可以使用 sp_resetstatus。否则,可能会损坏数据库。 由于该过程修改了系统表,系统管理员必须在创建这个过程前,启用系统表更新。要启用更新,使用下面的过程:USE master GO sp_configure 'allow updates', 1 GO RECONFIGURE WITH OVERRIDE GO过程创建后,立即禁用系统表更新:sp_configure 'allow updates', 0 GO RECONFIGURE WITH OVERRIDE GO只有系统管理员才能执行 sp_resetstatus。执行该过程后,立即关闭 SQL Server。语法为:sp_resetstatus database_name下面的例子将关闭 PRODUCTION 数据库的置疑标志。sp_resetstatus PRODUCTION下面是结果集:Database 'PRODUCTION' status reset! WARNING: You must reboot SQL Server prior to accessing this database!sp_resetstatus 存储过程代码 下面是 sp_resetstatus 存储过程的代码:IF EXISTS ( SELECT * from sysobjects where name = 'sp_resetstatus' ) DROP PROCEDURE sp_resetstatus GOCREATE PROC sp_resetstatus @dbname varchar(30) AS DECLARE @msg varchar(80) IF @@trancount > 0 BEGIN PRINT 'Can''t run sp_resetstatus from within a transaction.' RETURN (1) END IF suser_id() != 1 BEGIN SELECT @msg = 'You must be the System Administrator (SA)' SELECT @msg = @msg + ' to execute this procedure.' RETURN (1) END IF (SELECT COUNT(*) FROM master..sysdatabases WHERE name = @dbname) != 1 BEGIN SELECT @msg = 'Database ' + @dbname + ' does not exist!' PRINT @msg RETURN (1) END IF (SELECT COUNT(*) FROM master..sysdatabases WHERE name = @dbname AND status & 256 = 256) != 1 BEGIN PRINT 'sp_resetstatus can only be run on suspect databases.' RETURN (1) END BEGIN TRAN UPDATE master..sysdatabases SET status = status ^ 256 WHERE name = @dbname IF @@error != 0 OR @@rowcount != 1 ROLLBACK TRAN ELSE BEGIN COMMIT TRAN SELECT @msg = 'Database ' + @dbname + ' status reset!' PRINT @msg PRINT '' PRINT 'WARNING: You must reboot SQL Server prior to ' PRINT ' accessing this database!' PRINT '' END GO
/*--重置置疑状态 1.系统方法: 如果 sql server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复, 那么 microsoft® sql server™ 2000 会返回错误 1105 并且将 sysdatabases 中的 status 列设为置疑。按下面的步骤解决这个问题: 执行 sp_resetstatus。 语法为: sp_resetstatus '数据库名' 用 alter database 向数据库添加一个数据文件或日志文件。停止并重新启动 sql server。 用新的数据文件或日志文件所提供的额外空间,sql server 应该能完成数据库的恢复。释放磁盘空间并且重新运行恢复操作。 sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。 --*/--2.手工重置置疑状态 use master go sp_configure 'allow updates',1 reconfigure with override go declare @dbname varchar(30) set @dbname='你要处理的数据库名'if @@trancount > 0 print '正在进行事务处理,操作不能进行' else if suser_id()!=1 print '你不是系统管理员(sa),不能进行此操作' else if not exists(select 1 from master..sysdatabases where name=@dbname) print '你要操作的数据库不存在' else if not exists(select 1 from master..sysdatabases where name= @dbname and status & 256 = 256) print '你的数据库没有被置疑' else begin begin tran update master..sysdatabases set status = status ^ 256 where name = @dbname if @@error != 0 or @@rowcount != 1 rollback tran else begin commit tran print '操作成功,请重新启动SQL' end end go sp_configure 'allow updates', 1 reconfigure with override go
这个问题比较复杂,引起的原因页很多。另外,你备份后的数据如果是在置疑之后备份的恢复之后也是置疑的。 数据库置疑之后,你可以查看系统数据库maseter中的sysdatabase中的status列,如果该列值是256表示置疑 你可以手工恢复 必须以sa登陆 USE master GO sp_configure 'allow updates', 1 GO RECONFIGURE WITH OVERRIDE GO sp_resetstatus go
update sysdatabase set status = status -256 where dbname="your database name here" and status&256= 256(或者直接写256) go sp_configure 'allow updates', 1 GO RECONFIGURE WITH OVERRIDE GO sp_resetstatus go 这样一般能恢复
请问如何重新建立一个log文件!
新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数据库文件,启动数据库,该数据库被设未suspect然后把数据库改成紧急模式: sp_configure 'allow', 1 reconfigure with override update sysdatabases set status = 32768 where name = '数据库名'把LDF文件改名,再执行 DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' )恢复数据库紧急模式 update sysdatabases set status = 0 where name = '数据库名' 执行 restore database 数据库名 WITH RECOVERY sp_configure 'allow', 0 reconfigure with override然后用DBCC CHECKDB ('数据库名')看看有没有错误如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库
用 ALTER DATABASE 向数据库添加一个数据文件或日志文件。
停止并重新启动 SQL Server。
用新的数据文件或日志文件所提供的额外空间,SQL Server 应该能完成数据库的恢复。释放磁盘空间并且重新运行恢复操作。
sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。注意 只有在您的主要支持提供者指导下或有疑难解答建议的做法时,才可以使用 sp_resetstatus。否则,可能会损坏数据库。
由于该过程修改了系统表,系统管理员必须在创建这个过程前,启用系统表更新。要启用更新,使用下面的过程:USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO过程创建后,立即禁用系统表更新:sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO只有系统管理员才能执行 sp_resetstatus。执行该过程后,立即关闭 SQL Server。语法为:sp_resetstatus database_name下面的例子将关闭 PRODUCTION 数据库的置疑标志。sp_resetstatus PRODUCTION下面是结果集:Database 'PRODUCTION' status reset!
WARNING: You must reboot SQL Server prior to accessing this database!sp_resetstatus 存储过程代码
下面是 sp_resetstatus 存储过程的代码:IF EXISTS ( SELECT * from sysobjects where name = 'sp_resetstatus' )
DROP PROCEDURE sp_resetstatus
GOCREATE PROC sp_resetstatus @dbname varchar(30) AS
DECLARE @msg varchar(80)
IF @@trancount > 0
BEGIN
PRINT 'Can''t run sp_resetstatus from within a transaction.'
RETURN (1)
END
IF suser_id() != 1
BEGIN
SELECT @msg = 'You must be the System Administrator (SA)'
SELECT @msg = @msg + ' to execute this procedure.'
RETURN (1)
END
IF (SELECT COUNT(*) FROM master..sysdatabases
WHERE name = @dbname) != 1
BEGIN
SELECT @msg = 'Database ' + @dbname + ' does not exist!'
PRINT @msg
RETURN (1)
END
IF (SELECT COUNT(*) FROM master..sysdatabases
WHERE name = @dbname AND status & 256 = 256) != 1
BEGIN
PRINT 'sp_resetstatus can only be run on suspect databases.'
RETURN (1)
END
BEGIN TRAN
UPDATE master..sysdatabases SET status = status ^ 256
WHERE name = @dbname
IF @@error != 0 OR @@rowcount != 1
ROLLBACK TRAN
ELSE
BEGIN
COMMIT TRAN
SELECT @msg = 'Database ' + @dbname + ' status reset!'
PRINT @msg
PRINT ''
PRINT 'WARNING: You must reboot SQL Server prior to '
PRINT ' accessing this database!'
PRINT ''
END
GO
http://expert.csdn.net/Expert/topic/2482/2482235.xml?temp=.1645166
---------------------------
同意蒋老师,楼主你试了吗?
http://www.yiii.net/app/servlet/net.yiii.club.DownloadServlet?Information_Id=I00023471
解压缩密码 www.heibai.nethttp://www.ttdown.com/softview_8647.htm
注册机产生的是注册码,是两个用解压缩密码解开后,压缩包里也有一个注册机的打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了
想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行
T-sql代码就可以了例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....
1.系统方法:
如果 sql server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,
那么 microsoft® sql server™ 2000 会返回错误 1105
并且将 sysdatabases 中的 status 列设为置疑。按下面的步骤解决这个问题: 执行 sp_resetstatus。
语法为:
sp_resetstatus '数据库名'
用 alter database 向数据库添加一个数据文件或日志文件。停止并重新启动 sql server。 用新的数据文件或日志文件所提供的额外空间,sql server 应该能完成数据库的恢复。释放磁盘空间并且重新运行恢复操作。 sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。
--*/--2.手工重置置疑状态
use master
go
sp_configure 'allow updates',1 reconfigure with override
go
declare @dbname varchar(30)
set @dbname='你要处理的数据库名'if @@trancount > 0
print '正在进行事务处理,操作不能进行'
else if suser_id()!=1
print '你不是系统管理员(sa),不能进行此操作'
else if not exists(select 1 from master..sysdatabases where name=@dbname)
print '你要操作的数据库不存在'
else if not exists(select 1 from master..sysdatabases where name= @dbname and status & 256 = 256)
print '你的数据库没有被置疑'
else
begin
begin tran
update master..sysdatabases set status = status ^ 256 where name = @dbname
if @@error != 0 or @@rowcount != 1
rollback tran
else
begin
commit tran
print '操作成功,请重新启动SQL'
end
end
go
sp_configure 'allow updates', 1 reconfigure with override
go
数据库置疑之后,你可以查看系统数据库maseter中的sysdatabase中的status列,如果该列值是256表示置疑
你可以手工恢复
必须以sa登陆
USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_resetstatus
go
update sysdatabase
set status = status -256
where dbname="your database name here"
and status&256= 256(或者直接写256)
go
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_resetstatus
go
这样一般能恢复
sp_configure 'allow', 1
reconfigure with override
update sysdatabases set status = 32768 where name = '数据库名'把LDF文件改名,再执行
DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' )恢复数据库紧急模式
update sysdatabases set status = 0 where name = '数据库名'
执行
restore database 数据库名 WITH RECOVERY
sp_configure 'allow', 0
reconfigure with override然后用DBCC CHECKDB ('数据库名')看看有没有错误如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库