首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何还原Server数据库并同时收缩其文件?

如何还原Server数据库并同时收缩其文件?
EN

Server Fault用户
提问于 2010-09-22 13:36:56
回答 3查看 22.2K关注 0票数 12

假设我有一个SQL Server数据库,它的数据文件已经创建,初始大小为100 GB,但它只包含10 GB的数据。然后,数据库备份将仅为10 GB大小。

我希望将此备份还原到不同的服务器(或同一服务器上的不同数据库),但我不希望它占用与原始服务器相同的磁盘空间(100 GB),这是默认情况。

在进行备份之前,我不能收缩原始数据库(这是一个生产数据库,它需要那么多预先分配的空间);在还原完成之后,我可以缩小还原数据库,但是我真的希望它在执行备份时不占用100 GB;此外,在这个特定的场景中,我没有那么多的空闲磁盘空间,所以还原不会在任何地方进行。

有什么方法可以还原数据库并且只占用它所包含的实际数据的空间吗?

EN

回答 3

Server Fault用户

回答已采纳

发布于 2010-09-22 14:03:17

不,对不起-不可能。还原在备份时还原的文件。Schinking必须在此之后或在采取备份之前完成。

票数 6
EN

Server Fault用户

发布于 2010-09-23 12:51:29

如果您的磁盘空间紧张,那么您可以将.bak文件放在网络共享上,然后从那里恢复它。如果您使用域帐户运行sql服务器,则应该可以工作&给共享足够的权限读取该文件。

另一个选项是以前的“你”(但只有在运行server 2008 r2时有用),那就是Server支持直接创建数据库文件到共享中,而不必使用跟踪&我可以从个人经验中看出它是有效的!因此,您可以通过移动到共享来进行恢复。

票数 2
EN

Server Fault用户

发布于 2010-09-22 15:00:15

一般说来,不。一些随机的想法,可能对你有帮助,也可能没有帮助:

  • 除非绝对需要来自特定备份的数据,否则可以创建目标大小的新(空)数据库,并使用大容量副本(或SSIS)将当前(活动)数据库中的所有表推送到副本中。
  • 有第三方工具(例如Redgate比较)可以帮助自动化这类事情,如果这不仅仅是一次操作。
  • 一些第三方备份软件(例如,Quest)能够执行“对象级恢复”,它可以将单个表或其他对象还原到新的(空)数据库中。即使没有使用Litespeed创建备份,我也认为该产品应该适用于本机SQL备份。

最后,我也喜欢我的生产数据库中的一些“肘部空间”,但是没有100 do总容量的90 do听起来有点极端。以下步骤可能为您提供所需的内容,并且不应影响生产:

  1. 在生产数据文件上运行一个DBCC SHRINKFILE ('myfile.MDF', TRUNCATEONLY)以暂时释放文件末尾的任何空闲空间( TRUNCATEONLY不是IO密集型的,也不会分段索引)
  2. 如果日志文件也很大,那么在低活动时,在进行日志备份之后,在生产日志文件上运行一个DBCC SHRINKFILE
  3. 运行备份
  4. 执行一个ALTER DATABASE MODIFY FILE将生产数据文件重新增长回原来的大小。

使用这些步骤不应该产生任何生产影响。唯一的风险是,如果某些数据恰好位于100‘t数据文件的末尾,那么步骤(1)将不会释放多少空间。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/183588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档