sql server 如何仅还原一个表?

procedure123 2011-01-26 09:30:17
我一般知道如何备份一个数据库,如何还原一个数据库
但是这些都是以数据库为单位的,

我现在假如不小心delete了一个表的所有数据,那么仅仅想还原这个表,而不想动其它数据(因为还原只能还原到备份的时间点,若还原整个数据库,那么备份后的那段时间的数据会丢失),这个该怎么操作呢?
...全文
3362 点赞 收藏 22
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
procedure123 2011-01-27
[Quote=引用 21 楼 procedure123 的回复:]

引用 19 楼 yubofighting 的回复:

把备份的数据库还原到test(随便新建一个)中,然后select * into tablename from test..tablename

SQL code

use aa
go
select * into test from test1.test



消息 208,级别 16,状态 1,第 1 行
对象名 'test1……
[/Quote]
我弄错了,


select * into aa.dbo.test from test1.dbo.test

这样就对了,
回复
procedure123 2011-01-27
[Quote=引用 19 楼 yubofighting 的回复:]

把备份的数据库还原到test(随便新建一个)中,然后select * into tablename from test..tablename
[/Quote]

use aa
go
select * into test from test1.test


消息 208,级别 16,状态 1,第 1 行
对象名 'test1.test' 无效。
这样是不行的,不能从一个新的数据库查询结果插入到当前数据库表中
回复
flyerwing 2011-01-26
连接服务器直接倒入那个表不就成了!
回复
yesyesyes 2011-01-26
[Quote=引用 5 楼 procedure123 的回复:]
引用 4 楼 feixianxxx 的回复:

你说你要还原?
那你的备份是什么时候的备份?
你是还原到误操作的之前的一刻么?
...
那还不在原库上直接还原..取数据..

我意思是备份的数据可能是10小时前的,就是如果全部还原,那么这备份后10小时数据不是丢了吗?
[/Quote]

可以用日志还原啊
回复
kevin_long 2011-01-26
sql server 复制数据库功能 中 复制 你想要的表
回复
kevin_long 2011-01-26
sql server 支持 复制表的功能 你可以还原一个新的库。将对应的表复制过去
回复
fwacky 2011-01-26

select * into tablebak from table

--tablebak 这个表就你要备份的表! 删掉重建!恢复数据!
回复
fwacky 2011-01-26
还原以前的备份,然后把表的数据取出来。
回复
procedure123 2011-01-26
[Quote=引用 10 楼 billpu 的回复:]

不存在表备份的选项 因为sqlserver把表结构,表记录大致数量 索引信息存储到系统表里(以方便优化器选择优化),所以你的单表备份没有任何意义的 (这个是架构决定的)
其实你可以采用变通的方法来备份表,比如上面说的select 。。。into
还有通过dts/ssis工具可以方便的把表导出导入
还有复制的方法等或者干脆备份整个库
[/Quote]
select into 这个怎么操作?
因为我只知道在同一个数据库环境中执行select into语句,
回复
sql Server 不支持
回复
billpu 2011-01-26
不存在表备份的选项 因为sqlserver把表结构,表记录大致数量 索引信息存储到系统表里(以方便优化器选择优化),所以你的单表备份没有任何意义的 (这个是架构决定的)
其实你可以采用变通的方法来备份表,比如上面说的select 。。。into
还有通过dts/ssis工具可以方便的把表导出导入
还有复制的方法等或者干脆备份整个库
回复
procedure123 2011-01-26
[Quote=引用 8 楼 vivai2010 的回复:]

mysql支持单表备份,sql server不支持。
还原以前的备份,然后把表的数据取出来。
[/Quote]
那也是通过应用程序解决吗?
回复
vivai2010 2011-01-26
mysql支持单表备份,sql server不支持。
还原以前的备份,然后把表的数据取出来。
回复
procedure123 2011-01-26
[Quote=引用 4 楼 feixianxxx 的回复:]

你说你要还原?
那你的备份是什么时候的备份?
你是还原到误操作的之前的一刻么?
...
那还不在原库上直接还原..取数据..
[/Quote]
仅还原一个表的话,丢失数据是最少的了,
回复
procedure123 2011-01-26
[Quote=引用 3 楼 wxf163 的回复:]

SQL code
[Quote=引用 2 楼 procedure123 的回复:]

引用 1 楼 feixianxxx 的回复:

...sql server 据我所知不支持单个表还原 这种还原方式...

那是不是有其它变通方式,我能想到的就是先还原整个数据库到一个新的位置(不同名数据库),然后通过应用程序取出该表保存到程序数据集,然后再逐条插入源数据库的表中,这个比较老土了,能否通过数据……
[/Quote]
这个怎么操作啊?无法从一个数据库的表取数据插入到另一个数据库的表中吧?
回复
procedure123 2011-01-26
[Quote=引用 4 楼 feixianxxx 的回复:]

你说你要还原?
那你的备份是什么时候的备份?
你是还原到误操作的之前的一刻么?
...
那还不在原库上直接还原..取数据..
[/Quote]
我意思是备份的数据可能是10小时前的,就是如果全部还原,那么这备份后10小时数据不是丢了吗?
回复
feixianxxx 2011-01-26
你说你要还原?
那你的备份是什么时候的备份?
你是还原到误操作的之前的一刻么?
...
那还不在原库上直接还原..取数据..

回复
王向飞 2011-01-26
[Quote=引用 2 楼 procedure123 的回复:]

引用 1 楼 feixianxxx 的回复:

...sql server 据我所知不支持单个表还原 这种还原方式...

那是不是有其它变通方式,我能想到的就是先还原整个数据库到一个新的位置(不同名数据库),然后通过应用程序取出该表保存到程序数据集,然后再逐条插入源数据库的表中,这个比较老土了,能否通过数据库操作完成恢复单个表呢?
[/Quote]
那就别弄到其他位置了,放到本库里

select * into tablebak from table
回复
procedure123 2011-01-26
[Quote=引用 1 楼 feixianxxx 的回复:]

...sql server 据我所知不支持单个表还原 这种还原方式...
[/Quote]
那是不是有其它变通方式,我能想到的就是先还原整个数据库到一个新的位置(不同名数据库),然后通过应用程序取出该表保存到程序数据集,然后再逐条插入源数据库的表中,这个比较老土了,能否通过数据库操作完成恢复单个表呢?
回复
feixianxxx 2011-01-26
...sql server 据我所知不支持单个表还原 这种还原方式...

回复
加载更多回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2011-01-26 09:30
社区公告
暂无公告