十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
有个方法很好理解,如下:
目前创新互联建站已为上千余家的企业提供了网站建设、域名、雅安服务器托管、网站托管运营、企业网站设计、双峰网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
1、新建数据库,另起名,强制恢复原先数据库的备份。
2、从该新数据库中把你想要的表DTS到你想到的数据库中。
方法虽拐弯了一点,但很安全,很好理解。
SQLSERVER 2008误删除表,几百万行数据没了,怎么恢复
误删了数据可以用恢复软件恢复,你可以用 AneData全能文件恢复。格式化分区或者误ghost到其他的分区数据丢失要恢复,分区突然打不开了提示未被格式化数据要恢复,直接删除或者清空了回收站,卸载软件丢失的数据要恢复等等都可以恢复的,具有反删除、反格式化、分区恢复、高级模式等扫描功能,可以恢复最常见的种种数据丢失的情况。
使用Log Explorer查看和恢复数据
Log Explorer 4.1.可用于SQL Server2005的日志查看工具
下载地址:
使用方法:
打开Log Explorer - Attach Log File - 选择SQL Server服务器和登陆方式 - Connect -
在Database Name中选择数据库 - Attach- 左面对话框中Browse- View Log- 就可以看到log记录了
想恢复的话: 右键Log记录 Undo Transation- 选择保存文件名和路径- 然后打开该文件到查询分析器里执行
T-sql代码就可以了
例如 如果Log是delete table where ...的话,生成的文件代码就是insert table ....
然后将此insert table的代码放到查询分析器里执行.就可以恢复数据.
----------------------------------------------------------------------
--如何恢复被delete/update的数据
----------------------------------------------------------------------
1 连接到被删除数据库的Db
打开log explorer 选择 "file"-"attach log file"-选择服务器和登陆方式-"connect"-选择"数据库"-"attach"
2 查看日志
在左面操作项目的对话框中选择"browse"项目-"view log"-就可以看到当前的Log记录了
3 恢复数据
右键某一条log记录,选择"undo transation"-"选择保存文件名和路径"-然后打开该文件到查询分析器里执行
T-sql代码就可以了
例如: 如果log是delete table where ...的话,生成的文件代码就是insert table ....
----------------------------------------------------------------------
--Log Explorer恢复被drop table和truncate table后的数据
----------------------------------------------------------------------
1 连接到被删除数据库的Db
操作同上
2 恢复方法
1) 选择"salvaage dropped/truncate"菜单,在右边的对话框中选择表名,和droped/trucated的日期,
File Name中选择生成insert语句脚步的存放位置,condition选择是droped还是truncated,
最后点击"create" 就会生成insert语句,把生成的语句到查询分析器里面执行一下就可以了
2) 选择"ViewDDL Commands"菜单-选"truncate table" 操作项-点击"Salvage"-生成语句-查询分析器里执行
----------------------------------------------------------------------
--log explorer使用的几个问题
----------------------------------------------------------------------
1) 对数据库做完全/差异/日志备份
备份时如果选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时,提示No log recorders found that match the filter,would you like to view unfiltered data 选择yes 就看不到刚才的记录了
如果不选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时,就能看到原来的日志并做恢复
2) 修改了其中一个表中的部分数据,此时用Log explorer看日志,可以作日志恢复
3) 然后恢复备份,(注意:恢复是断开log explorer与数据库的连接,或连接到其他数据上,
否则会出现数据库正在使用无法恢复)
恢复完后,再打开log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data,选择yes 就看不到刚才在2中修改的日志记录,所以无法做恢复.
4) 不要用SQL的备份功能备份,搞不好你的日志就破坏了.
正确的备份方法是:
停止SQL服务,复制数据文件及日志文件进行文件备份.
然后启动SQL服务,用log explorer恢复数据
方案1:恢复到一个不同的数据库:
对于小数据库来说不失为一种好的办法,用备份还原一个新的库,并把新库中的表数据同步回去。你可以做完整恢复,或者时间点恢复。但是对于大数据库,是非常耗时和耗费磁盘空间的。这个方法仅仅用于还原数据,在还原数据(就是同步数据)的时候,你要考虑触发器、外键等因素。
方案2:使用STOPAT来还原日志:
你可能想恢复最近的数据库备份,并回滚到某个时间点,即发生意外前的某个时刻。此时可以使用STOPAT子句,但是前提是必须为完整或大容量日志恢复模式。
用RESTORE命令还原起来不太好写,我建议你还是新建一个数据库,然后在新建数据库上强制还原你的数据备份(注意目的数据库的路径选择),然后使用“导入/导出数据”命令在数据库之间将你需要的表覆盖(注意不要选成追加)。就可以了。
ps,研究完RESTORE,上面还原十边都完了。呵呵,还有别忘了在还原前再做此备份
下面是使用restore命令还原,如果不明白可以看看sqlserver帮助
还原数据库的部分内容:
RESTORE DATABASE { database_name | @database_name_var }
file_or_filegroup [ ,...n ]
[ FROM backup_device [ ,...n ] ]
[ WITH
{ PARTIAL }
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] NORECOVERY ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTRICTED_USER ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]