我需要从MSDB文件中恢复作业。我不得不完全重新安装一个新的Server和Windows,但显然我忘记了做MSDB备份。是啊,大错。现在我需要恢复它,或者至少把工作从它中拿出来,这对于日常操作来说是必不可少的。我们的磁带备份,有我需要的备份,将在星期六到达这里,但我不想再冒险一天,没有这些工作运行。我尝试了sp_dbattach过程,以便我可以获得脚本,但显然日志文件是坏的,因为它有一些事务正在进行时,另一个服务器崩溃。我有什么选择吗?
发布于 2013-11-22 03:41:54
您应该能够使用以下方法连接msdb.mdf:
CREATE DATABASE msdbtest ON (
NAME = 'msdb_data'
, FILENAME = 'c:\path_to_your_old_msdb\msdb_data.mdf'
) FOR ATTACH;注意,根据运行上述命令的操作系统的不同,您可能需要提高(runas管理员)的权限才能使命令工作。详见我的问题这里。
在附加文件之前,我故意破坏了计算机上的.ldf,并收到了有关新附加的msdbtest数据库的以下错误消息:
File activation failure. The physical file name "C:\SQLServer\Logs\msdbtest_log.ldf" may be incorrect.
New log file 'c:\sqlserver\data\msdbtest_log.ldf' was created.
Msg 824, Level 24, State 2, Line 1
SQL Server detected a logical consistency-based I/O error: incorrect checksum
(expected: 0xa3ba6e3e; actual: 0x208d1401). It occurred during a read of page (2:0)
in database ID 11 at offset 0000000000000000 in file 'C:\SQLServer
\Logs\msdbtest_log.ldf'. Additional messages in the SQL Server error log or system
event log may provide more detail. This is a severe error condition that threatens
database integrity and must be corrected immediately. Complete a full database
consistency check (DBCC CHECKDB). This error can be caused by many factors; for more
information, see SQL Server Books Online.我运行了DBCC CHECKDB('msdbtest'),它没有报告错误。然后,我能够运行以下SELECT语句来查看有关msdb中存储的作业的详细信息。
SELECT * FROM dbo.sysjobs
SELECT * FROM dbo.sysjobsteps
SELECT * FROM dbo.sysjobstepslogs
SELECT * FROM dbo.sysjobschedules
SELECT * FROM dbo.sysjobservers
SELECT * FROM dbo.sysjobhistory
SELECT * FROM dbo.sysjobactivity您可以使用这些表中存储的信息重新创建作业。
https://dba.stackexchange.com/questions/53736
复制相似问题