第一篇:MSSql2008数据库恢复过程记录
信息平台采用RoseHA8.5 for SQL Server 2008双机热备的存储解决方案,在应用过程中,由于roseHa的切换界面简易,操作简单,适用于但应用层的管理,有时候双机切换会造成数据丢失甚至数据库损坏。
最常见的是Msdb损坏出现如下错误
通过百度、google搜索无法打开数据库 'msdb'。恢复操作已将该数据库标记为 SUSPECT。有关详细信息,请参阅 SQL Server 错误日志。(Microsoft SQL Server,错误: 926)解决方式
第一种:把其他电脑中中的msdb数据库的mdf和ldf文件拷贝到自己的目录中,但是这种方法的缺点是:造成一部分数据丢失,尤其是代理的相关作业丢失。msdb是系统数据库,里面记录调度警报和作业以及操作员的信息,如果没有用到这些内容,直接用备份恢复就可以的。在单用户模式下,停掉SQL server服务,在另一台机装同版本sqlserver,把msdb覆盖过来。第二种:执行下面的SQL命令(在单用户模式修复数据库)USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名' Go
sp_dboption '置疑的数据库名', 'single user', 'true'
Go
DBCC CHECKDB('置疑的数据库名')
Go
update sysdatabases set status =28 where name='置疑的数据库名' Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption '置疑的数据库名', 'single user', 'false'
Go
其中置疑的数据库名就是有问题的数据库 操作后:
经过测试只有结合两种方案来解决。
首先是停止生产运行的sql服务,拷贝启动正常的MSdb库到生产环境中替换损坏的库,启动生产环境Sql服务,运行上述T-Sql修复msdb数据库执行命令。
第三步分别执行下面T-sql 此步骤同样能解决装完SQL Server后修改计算机名不能执行代理作业
use master go select @@servername select serverproperty('servername')如果这两个结果不一致,说明机器改过名字
--要修复此问题
--执行下面的语句,完成后重新启动SQL服务
if serverproperty('servername')<> @@servername begin declare @server sysname set @server = @@servername exec sp_dropserver @server = @server set @server = cast(serverproperty('servername')as sysname)exec sp_addserver @server = @server , @local = 'LOCAL' end 最后重新启动服务
第四步,新建维护计划(备份数据库)测试是否能运行。运行前请检查Sql代理服务是否启动。如果不能运行 执行下面T-sql SELECT [subsystem] ,[subsystem_dll]
FROM[msdb].[dbo].[syssubsystems] GO
查看原来是配置里的指定Dll文件路径不对,一般共享存储无D盘,一般是E盘
执行命令替换D:为E: Update [msdb].[dbo].[syssubsystems] set subsystem_dll=replac(subsystem_dll,’D:’,’E:’);
如果生产环境数据库实例名跟拷贝的msdb数据库实例名不一致 请执行
Update[msdb].[dbo].[syssubsystems]setsubsystem_dll=replace(subsystem_dll,'MSSQLSERVER','XXServer')'MSSQLSERVER'为拷贝msdb的数据库实例名 'XXServer'为生产环境的数据库实例名
重启生产环境Sql服务和代理服务即可。
第二篇:管家婆恢复数据库
管家婆手工恢复数据库 2011-04-24 15:29 管家婆用户超级群:81853829,其他详细资料联系群主
操作系统重装后,如何通过附加数据库方法恢复管家婆数据?
声明:
1.针对于使用Microsoft SQL Sever系列数据库系统的管家婆软件
2.必须存在数据库源.Mdf和.Log文件,并确定文件无损害
3.适用于在全新或者重新安装Microsoft SQL Sever数据库系统的情况下操作 1.打开企业管理器
方法1:开始菜单-> Microsoft SQL Sever-> 企业管理器
方法2:第一步:开始菜单-> 运行-> MMC ; 第二步:文件菜单-> 打开,找到指定文件并打开,一般情况下是C:Program FilesMicrosoft SQL Server80ToolsBinnSQL Server Enterprise Manager”.|管
2.从左列中选择“数据库”,并选择其点击右键,选择“附加数据库”,3.在弹出的窗体中点击“验证”左边的;4.在“浏览现有的文件”中选择指定的数据库文件.一般情况下,您的帐套数据文件保存于您管家婆软件原安装文件夹下的 服务器端下的data 文件夹中,并且是同时具有相同文件名的二个文件;注意:务必选择您的原先的数据库文件,并
且要选中“.mdf”文件
5.点击确定后,返回“附加数据库”窗体;注意:1)在下方列表中必定会有二个文件分别是.mdf和.ldf文件,同时其前面必须是绿色的 状态,如果打 状态,则说明肯定有错误。请重复上一步骤。
2)一般情况“附加为(A)”默认为原先的数据库名称,非必要情况下不要更改;“指定数据库所有者”默认为sa,如果不是sa,请选择为sa。6.点击确定附加数据库成功。
以下是在账套列表中增加所附加数据库的信息。这样,打开软件进入时的账套列表中才可以看到., R7.从左列中选择“master”数据库,然后选择“表”,在右列中选择“Graspcwzt”表,右键选择“打开表”并选择“返回所有行”
注意:如果在master数据库中找不到
“Graspcwzt”表,请运行软件一次,到达选择账套列表的时候再退出软件,返回到此步骤重新操作,即可自行创建账套表。8.在打开的账套列表中增加一行,即填入相关信息;
注意:1)order列不要填入,将自动产生;2)dbname列则是您附加的数据库名称,即步骤5中“附加为”的名称,请核对左列“数据库”,节点下是否已经存在该数据库,并名称要保持一致;
3)fullname列是显示的帐套名称,可以是自行定义的对应中文名。9.点击运行并保存后关闭Graspcwzt表.
第三篇:MSSQL 2005 数据库变成可疑状态处理办法
MSSQL 2005 数据库变成可疑状态处理办法
发现黄色页面,日志报错,无法链接,打开SQL一看,数据库变成了“三角惊叹号+数据库名+(可疑)”
1、修改数据库为紧急模式
ALTER DATABASE 数据库名 SET EMERGENCY
2、使数据库变为单用户模式
ALTER DATABASE 数据库名 SET SINGLE_USER
3、修正数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象不正确。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修正报告的不正确。但是,这些修正可能会导致一些数据丢失。
DBCC CheckDB(数据库名 , REPAIR_ALLOW_DATA_LOSS)
4、使数据库变回为多用户模式
ALTER DATABASE 数据库名 SET MULTI_USER
第四篇:虚拟主机中MSSQL和Access数据库数据传输简单总结
虚拟主机中MSSQL和Access数据库数据传输简单总结
所谓的数据传输,其实是指SQLServer访问Access间的数据。
由于历史的原因,客户以前的数据很多都是在存入在文本数据库中,如Acess现在系统升级及数据库服务器如SQLServer后,经常需要访问文本数据库中的数据,所以就会产生这样的需求。
要完成标题的需要,在SQLServer中是一件非常简单的事情。
通常的可以有3种方式:
1、BCP
2、分布式查询.分别以查、增、删、改作为简单的例子: 下面,直接以T-SQL的形式表现出来。
一、SQLServer和Access1、查询Access中数据的方法:
select * from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from serv_user')
或
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source=“c:DB2.mdb”;User ID=Admin;Password=')...serv_user2、从SQLServer向Access写数据:
insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from Accee表')select * from SQLServer表
或用BCP
master..xp_cmdshell'bcp “serv-htjs.dbo.serv_user” out “c:db3.mdb”-c-q-S“.”-U“sa”-P“sa”' 上面的区别主要是:OpenRowSet需要mdb和表存在,BCP会在不存在的时候生成该mdb3、从Access向SQLServer写数据:有了上面的基础,这个就很简单了
insert into SQLServer表 select * from
OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from Accee表')
或用BCP
master..xp_cmdshell'bcp “serv-htjs.dbo.serv_user” in “c:db3.mdb”-c-q-S“.”-U“sa”-P“sa”'
4、删除Access数据:
delete from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from serv_user')
where lock=05、修改Access数据:
update OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from serv_user')set lock=1
第五篇:Rman完全恢复数据库
RMAN完全恢复数据库(归档和非归档)-Production Copyright(c)1995, 2002, Oracle Corporation.All rights reserved.连接到目标数据库: ORA9I(DBID=2359974273)正在使用目标数据库控制文件替代恢复目录 RMAN> shutdown immediate;数据库已卸载
Oracle 例程已关闭 RMAN> startup mount 已连接到目标数据库(未启动)Oracle 例程已启动 数据库已加载 系统全局区域总计 135338868 字节 Fixed Size 453492 字节 Variable Size 109051904 字节 Database Buffers 25165824 字节 Redo Buffers 667648 字节 RMAN> run {sql 'alter database noarchivelog';} sql 语句: alter database noarchivelog RMAN> run {sql 'alter database open';} sql 语句: alter database open RMAN> shutdown immediate 数据库已关闭 数据库已卸载
Oracle 例程已关闭 RMAN> startup mount 已连接到目标数据库(未启动)Oracle 例程已启动 数据库已加载
系统全局区域总计 135338868 字节 Fixed Size 453492 字节 Variable Size 109051904 字节 Database Buffers 25165824 字节 Redo Buffers 667648 字节
RMAN> backup database format 'c:%U';'作数据库全备
启动 backup 于 29-6月-05 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=13 devtype=DISK 分配的通道: ORA_DISK_2 通道 ORA_DISK_2: sid=14 devtype=DISK 分配的通道: ORA_DISK_3 通道 ORA_DISK_3: sid=15 devtype=DISK 通道 ORA_DISK_1: 正在启动 full 数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00005 name=F:ORACLEORADATAORA9IEXAMPLE01.DBF 输入数据文件 fno=00011 name=F:ORACLEORADATAORA9ICODES_TABLES.DBF 输入数据文件 fno=00013 name=F:ORACLEORADATAORA9IDATA02.DBF 输入数据文件 fno=00006 name=F:ORACLEORADATAORA9IINDX01.DBF 输入数据文件 fno=00003 name=F:ORACLEORADATAORA9ICWMLITE01.DBF 通道 ORA_DISK_1: 正在启动段 1 于 29-6月-05 通道 ORA_DISK_2: 正在启动 full 数据文件备份集 通道 ORA_DISK_2: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=F:ORACLEORADATAORA9IUNDOTBS01.DBF 输入数据文件 fno=00012 name=F:ORACLEORADATAORA9IDATA01.DBF 输入数据文件 fno=00010 name=F:ORACLEORADATAORA9IXDB01.DBF 输入数据文件 fno=00009 name=F:ORACLEORADATAORA9IUSERS01.DBF 输入数据文件 fno=00004 name=F:ORACLEORADATAORA9IDRSYS01.DBF 通道 ORA_DISK_2: 正在启动段 1 于 29-6月-05 通道 ORA_DISK_3: 正在启动 full 数据文件备份集 通道 ORA_DISK_3: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=F:ORACLEORADATAORA9ISYSTEM01.DBF 输入数据文件 fno=00007 name=F:ORACLEORADATAORA9IODM01.DBF 输入数据文件 fno=00008 name=F:ORACLEORADATAORA9ITOOLS01.DBF 输入数据文件 fno=00014 name=F:ORACLEORADATAORA9IUSERS03.DBF 输入数据文件 fno=00015 name=F:ORACLEORADATAORA9IUNDO01.DBF 通道 ORA_DISK_3: 正在启动段 1 于 29-6月-05 通道 ORA_DISK_2: 已完成段 1 于 29-6月-05, 有 2 个副本 段 handle=C:SGO6C52_1_1 comment=NONE 段 handle=C:SGO6C52_1_2 comment=NONE 通道 ORA_DISK_2: 备份集已完成, 经过时间:00:02:29 通道 ORA_DISK_1: 已完成段 1 于 29-6月-05, 有 2 个副本 段 handle=C:RGO6C51_1_1 comment=NONE 通道 ORA_DISK_3: 已完成段 1 于 29-6月-05, 有 2 个副本 段 handle=C:TGO6C52_1_1 comment=NONE 段 handle=C:RGO6C51_1_2 comment=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:09:57 段 handle=C:TGO6C52_1_2 comment=NONE 通道 ORA_DISK_3: 备份集已完成, 经过时间:00:09:58 完成 backup 于 29-6月-05 启动 Control File and SPFILE Autobackup 于 29-6月-05 段 handle=F:ORACLEORA92DATABASEC-2359974273-20050629-03 comment=NON 完成 Control File and SPFILE Autobackup 于 29-6月-05 RMAN> shutdown immediate;数据库已卸载
将oradata中的INDX01.DBF文件删掉,模拟数据库损坏 RMAN> exit
恢复管理器完成。
C:Documents and Settings陈安宁>rman nocatalog target sys/admin@ora9i 恢复管理器: 版本9.2.0.1.0请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 6: 'F:ORACLEORADATAORA9IINDX01.DBF' RMAN> restore database;启动 restore 于 29-6月-05 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=13 devtype=DISK 分配的通道: ORA_DISK_2 通道 ORA_DISK_2: sid=14 devtype=DISK 分配的通道: ORA_DISK_3 通道 ORA_DISK_3: sid=15 devtype=DISK 正在略过数据文件 1;已恢复到文件 F:ORACLEORADATAORA9ISYSTEM01.DBF 正在略过数据文件 7;已恢复到文件 F:ORACLEORADATAORA9IODM01.DBF 正在略过数据文件 8;已恢复到文件 F:ORACLEORADATAORA9ITOOLS01.DBF 正在略过数据文件 14;已恢复到文件 F:ORACLEORADATAORA9IUSERS03.DBF 正在略过数据文件 15;已恢复到文件 F:ORACLEORADATAORA9IUNDO01.DBF 正在略过数据文件 2;已恢复到文件
F:ORACLEORADATAORA9IUNDOTBS01.DBF 正在略过数据文件 4;已恢复到文件 F:ORACLEORADATAORA9IDRSYS01.DBF 正在略过数据文件 9;已恢复到文件 F:ORACLEORADATAORA9IUSERS01.DBF 正在略过数据文件 10;已恢复到文件 F:ORACLEORADATAORA9IXDB01.DBF 正在略过数据文件 12;已恢复到文件 F:ORACLEORADATAORA9IDATA01.DBF 正在略过数据文件 3;已恢复到文件
F:ORACLEORADATAORA9ICWMLITE01.DBF 正在略过数据文件 5;已恢复到文件
F:ORACLEORADATAORA9IEXAMPLE01.DBF 正在略过数据文件 11;已恢复到文件
F:ORACLEORADATAORA9ICODES_TABLES.DBF 正在略过数据文件 13;已恢复到文件 F:ORACLEORADATAORA9IDATA02.DBF 通道 ORA_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00006恢复到F:ORACLEORADATAORA9IINDX01.DBF 通道 ORA_DISK_1: 已恢复备份段 1 段 handle=C:RGO6C51_1_1 tag=TAG20050629T112311 params=NULL 通道 ORA_DISK_1: 恢复完成 完成 restore 于 29-6月-05 RMAN> recover database 2>;启动 recover 于 29-6月-05 使用通道 ORA_DISK_1 使用通道 ORA_DISK_2 使用通道 ORA_DISK_3 正在开始介质的恢复 完成介质的恢复
完成 recover 于 29-6月-05 RMAN> run {sql 'alter database open';} sql 语句: alter database open RMAN> ********** 归档模式下恢复对整个数据库进行恢复 rman target / rman>startup mount rman>restroe database;rman>recover database;rman>alter database open;模拟步骤:
1、在归档模式下做一个全备份
C:Documents and Settings陈安宁>rman nocatalog target sys/admin@ora9i 恢复管理器: 版本9.2.0.1.0Production Copyright(c)1995, 2002, Oracle Corporation.All rights reserved.已连接到目标数据库(未启动)
4、RMAN> startup mount Oracle 例程已启动 数据库已加载 系统全局区域总计 135338868 字节 Fixed Size 453492 字节 Variable Size 109051904 字节 Database Buffers 25165824 字节 Redo Buffers 667648 字节
5、还原数据库
RMAN> restore database 2>;启动 restore 于 29-6月-05 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=13 devtype=DISK 分配的通道: ORA_DISK_2 通道 ORA_DISK_2: sid=14 devtype=DISK 分配的通道: ORA_DISK_3 通道 ORA_DISK_3: sid=15 devtype=DISK 通道 ORA_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00002恢复到F:ORACLEORADATAORA9IUNDOTBS01.DBF 正将数据文件00004恢复到F:ORACLEORADATAORA9IDRSYS01.DBF 正将数据文件00009恢复到F:ORACLEORADATAORA9IUSERS01.DBF 正将数据文件00010恢复到F:ORACLEORADATAORA9IXDB01.DBF 正将数据文件00012恢复到F:ORACLEORADATAORA9IDATA01.DBF 通道 ORA_DISK_2: 正在开始恢复数据文件备份集 通道 ORA_DISK_2: 正在指定从备份集恢复的数据文件
正将数据文件00003恢复到F:ORACLEORADATAORA9ICWMLITE01.DBF 正将数据文件00005恢复到F:ORACLEORADATAORA9IEXAMPLE01.DBF 正将数据文件00006恢复到F:ORACLEORADATAORA9IINDX01.DBF 正将数据文件00011恢复到F:ORACLEORADATAORA9ICODES_TABLES.DBF 正将数据文件00013恢复到F:ORACLEORADATAORA9IDATA02.DBF 通道 ORA_DISK_3: 正在开始恢复数据文件备份集 通道 ORA_DISK_3: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到F:ORACLEORADATAORA9ISYSTEM01.DBF 正将数据文件00007恢复到F:ORACLEORADATAORA9IODM01.DBF 正将数据文件00008恢复到F:ORACLEORADATAORA9ITOOLS01.DBF 正将数据文件00014恢复到F:ORACLEORADATAORA9IUSERS03.DBF 正将数据文件00015恢复到F:ORACLEORADATAORA9IUNDO01.DBF 通道 ORA_DISK_1: 已恢复备份段 1 段 handle=C:ORADATA11GO6L2H_1_1 tag=TAG20050629T135527 params=NULL 通道 ORA_DISK_1: 恢复完成
通道 ORA_DISK_2: 已恢复备份段 1 段 handle=C:ORADATA10GO6L2G_1_1 tag=TAG20050629T135527 params=NULL 通道 ORA_DISK_2: 恢复完成
通道 ORA_DISK_3: 已恢复备份段 1 段 handle=C:ORADATA12GO6L2H_1_1 tag=TAG20050629T135527 params=NULL 通道 ORA_DISK_3: 恢复完成 完成 restore 于 29-6月-05 RMAN> RMAN>
6、recover 数据库 RMAN> recover database 2>;启动 recover 于 29-6月-05 使用通道 ORA_DISK_1 使用通道 ORA_DISK_2 使用通道 ORA_DISK_3 正在开始介质的恢复 完成介质的恢复
完成 recover 于 29-6月-05
7、打开数据库
RMAN> run {sql 'alter database open';} sql 语句: alter database open RMAN>
**************** set newname命令来还原数据文件 到一个新的位置 用switch 命令来记录改变在控制文件中