我有一台 SQL Server(在 Windows XP 上),我使用 Report Manager 和一堆数据库发布了报告。在 SQL Server 中,我安排了作业来更新表等。今天早上我来的时候发现根驱动器坏了。我的驱动器已分区,因此我的数据库不在根驱动器上 - 因此我能够挽救数据库。
我能够使用以前的硬盘(大约一个月前 - 我们升级了)并将当前数据库加载到旧硬盘中。我正尝试让旧硬盘跟上当今的数据、作业、文件……的速度。
我的数据库似乎加载正常。
我无法查看使用报告管理器的任何报告。有几个问题:
- 通过 SQL Server 运行的作业是否存储在与数据库不同的目录中?
- 知道访问报告管理器报告时发生了什么吗?通常,客户端计算机可以使用 IE 访问报告。- 也无法使用 ODBC 连接与 Access 进行连接。(网络插头已连接)。
- 除了数据库之外,我是否缺少了其他可能需要恢复到当前视图的部分?
任何建议都值得赞赏。
答案1
我要做的第一件事是正常停止 SQL Server 服务 - 然后复制服务器上的所有 ldf/mdf 文件。还要找到备份文件的位置 - 它们的名称应为 MyDBname_backup_200907220000.bak 之类的名称,并将扩展名重命名为 .hold 之类的名称。这样,如果您必须进行恢复,它们就不会被维护计划抹去。
此后 — — 仅恢复 SQL Server 服务 — — 而不是服务器代理。
检查数据库是否仍被标记为可疑。如果
ALTER DATABASE [MyDBName]
SET EMERGENCY
GO
EXEC sp_resetstatus 'your_db_name';
GO
DBCC DBRECOVER ('your_db_name')
GO
ALTER DATABASE [MyDBName]
SET ONLINE
GO
如果这不起作用 - 请回复,我们看看还能做些什么。
答案2
从你的问题来看,我猜你可能丢失了 master 和 msdb。否则,从你的问题来看,有点难以判断,但是...
- 作业存储在 MSDB 中。如果您有备份但没有 MSDB 的文件,则可以将其还原为 old-msdb,并且可能能够在 msdb.dbo.sysjob* 表中找到文件。
- ODBC 连接是否引用了正确的计算机名称?SQL Server 配置管理器中新计算机名称上的网络设置是否正确?此外——这是一个愚蠢的问题,但我必须问——报告管理器/SSRS是安装好了,对吧?防火墙允许连接吗?也可能是权限问题,特别是如果你丢失了 master。
如果您丢失了主登录名,但重新创建了登录名,则您的 SQL 登录名可能处于“孤立”状态。您可以通过运行来判断是否有孤立用户
USE <database_name>;
GO;
sp_change_users_login @Action='Report';
GO;
如果你确实有孤立用户,你可以使用以下方法修复它们
USE <database_name>;
GO
sp_change_users_login @Action='update_one', @UserNamePattern='<database_user>',
@LoginName='<login_name>';
GO
(代码来自微软。