导出表不小心导到了master,如何从备份文件中取出表数据

wks9527 2004-03-23 09:29:18
从另处导出一个view的数据到一个表,导出时用DTS,不小心搞到master表中,并将master备份回来了,本地还原时报master文件正在使用,请教高手。
...全文
89 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wks9527 2004-03-23
  • 打赏
  • 举报
回复
已经搞定了,恢复到一个不存在的库里面就行了,那样就会新建数据和日志文件。
wks9527 2004-03-23
  • 打赏
  • 举报
回复
可是我没有办法将备份回来的文件倒入到本地的sql server中,倒入时总是报c:\...\master.mdf文件在使用,换个另外的库名字,强制也不行,如何做呢?
progress99 2004-03-23
  • 打赏
  • 举报
回复
你直接在master庫中把生成的表刪除不就可以了嗎?
zjcxc 2004-03-23
  • 打赏
  • 举报
回复
如何恢复系统数据库?

关于系统数据库的恢复总结如下:
  在SQL Server数据库中,系统信息存储在系统数据库中,主要的系统数据库包括:
  master-从整体上控制用户数据库和SQL Server操作,在创建了任何用户定义的对象后,都要备份它
  model-为新数据库提供模版和原型
  msdb-包含了有关作业、报警及操作员等信息如果包含系统数据库的介质变了,那么必须重建系统数据库,如果你仍然可以启动SQL Server服务,则可以通过RESTORE语句从系统数据库的备份中恢复数据库。
  如果master坏了,不能启动系统,可以按照下面步骤进行恢复
1.重建系统数据库 运行c:\mssql7\binn\rebuildm.exe,按照提示进行即可,
过程中需要系统数据库样本的路径,可在安装光盘中找到;

2 重建系统数据库后,启动SQL Server服务,用系统数据库的备份恢复数据库
就行了通常恢复顺序为master->msdb->model
在恢复master的备份时要注意:必须在单用户(single user)模式下进行

a.进入单用户模式的方法:
1.在命令行模式下输入sqlservr -c -f -m或者输入sqlservr -m
其中:-c 可以缩短启动时间,SQL Server 不作为Windows NT的服务启动
-f 用最小配置启动SQL Server
-m 单用户模式启动SQL Server

2.可以在控制面板-服务-MSSQLServer的启动参数中输入-c -f -m或者输入-m,点击开始

3.进行master数据库的恢复
a.直接进入查询分析器,有个提示不要理会它
输入恢复语句进行数据库恢复:
RESTORE DATABASE master from disk='c:\具体的备份文件名'

b.或者用这个,在命令提示符下输入,注意大小写
使用"windows身份验证"的,输入:isql /E
使用"sql server和windows身份验证"的,输入:isql /U"用户名" /P"密码"
然后在出现的提示符下输入(注意1>,2>是提示符):
1>RESTORE DATABASE master from disk='c:\具体的备份文件名'
2>go
MyISAM InnoDB 区别 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个类型,这两个类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的强调的是性能,其执行数度比InnoDB类型更快,   MyISAM 和 InnoDB 讲解   InnoDB和MyISAM是许多人在使用MySQL时最常用的两个类型,这两个类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。   以下是一些细节和具体实现的差别:   ◆1.InnoDB不支持FULLTEXT类型的索引。   ◆2.InnoDB 不保存的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种的操作是一样的。   ◆3.对于AUTO_INCREMENT类型的字段,InnoDB必须包含只有该字段的索引,但是在MyISAM,可以和其他字段一起建立联合索引。   ◆4.DELETE FROM table时,InnoDB不会重新建立,而是一行一行的删除。   ◆5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB改成MyISAM,导入数据后再改成InnoDB,但是对于使用的额外的InnoDB特性(例如外键)的适用。   另外,InnoDB的行锁也不是绝对的,假如在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB同样会锁全,例如update table set num=1 where name like “%aaa%”   两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目使用。   我作为使用MySQL的用户角度出发,Innodb和MyISAM都是比较喜欢的,但是从我目前运维的数据库平台要达到需求:99.9%的稳定性,方便的扩展性和高可用性来说的话,MyISAM绝对是我的首选。   原因如下:   1、首先我目前平台上承载的大部分项目是读多写少的项目,而MyISAM的读性能是比Innodb强不少的。   2、MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小。   3、从平台角度来说,经常隔1,2个月就会发生应用开发人员不小心update一个where写的范围不对,导致这个没法正常用了,这个时候MyISAM的优越性就体现出来了,随便从当天拷贝的压缩包取出对应的文件,随便放到一个数据库目录下,然后dump成sql再导回到主库,并把对应的binlog补上。如果是Innodb,恐怕不可能有这么快速度,别和我说让Innodb定期用导出xxx.sql机制备份,因为我平台上最小的一个数据库实例的数据量基本都是几十G大小。   4、从我接触的应用逻辑来说,select count(*) 和order by 是最频繁的,大概能占了整个sql总语句的60%以上的操作,而这种操作Innodb其实也是会锁的,很多人以为Innodb是行级锁,那个只是where对它主键是有效,非主键的都会锁全的。   5、还有就是经常有很多应用部门需要我给他们定期某些数据,MyISAM的话很方便,只要发给他们对应那的frm.MYD,MYI的文件,让他们自己在对应版本的数据库启动就行,而Innodb就需要导出xxx.sql了,因为光给别人文件,受字典数据文件的影响,对方是无法使用的。   6、如果和MyISAM比insert写操作的话,Innodb还达不到MyISAM的写性能,如果是针对基于索引的update操作,虽然MyISAM可能会逊色Innodb,但是那么高并发的写,从库能否追的上也是一个问题,还不如通过多实例分库分架构来解决。   7、如果是用MyISAM的话,merge引擎可以大大加快应用部门的开发速度,他们只要对这个merge做一些select count(*)操作,非常适合大项目总量约几亿的rows某一类型(如日志,调查统计)的业务。   当然Innodb也不是绝对不用,用事务的项目如模拟炒股项目,我就是用Innodb的,活跃用户20多万时候,也是很轻松应付了,因此我个人也是很喜欢Innodb的,只是如果从数据库平台应用出发,我还是会首选MyISAM。   另外,可能有人会说你MyISAM无法抗太多写操作,但是我可以通过架构来弥补,说个我现有用的数据库平台容量:主从数据总量在几百T以上,每天十多亿 pv的动态页面,还有几个大项目是通过数据接口方式调用未算进pv总数,(其包括一个大项目因为初期memcached没部署,导致单台数据库每天处理 9千万的查询)。而我的整体数据库服务器平均负载都在0.5-1左右。

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧