假设我有一个SQL Server数据库,它的数据文件已经创建,初始大小为100 GB,但它只包含10 GB的数据。然后,数据库备份将仅为10 GB大小。
我希望将此备份还原到不同的服务器(或同一服务器上的不同数据库),但我不希望它占用与原始服务器相同的磁盘空间(100 GB),这是默认情况。
在进行备份之前,我不能收缩原始数据库(这是一个生产数据库,它需要那么多预先分配的空间);在还原完成之后,我可以缩小还原数据库,但是我真的希望它在执行备份时不占用100 GB;此外,在这个特定的场景中,我没有那么多的空闲磁盘空间,所以还原不会在任何地方进行。
有什么方法可以还原数据库并且只占用它所包含的实际数据的空间吗?
发布于 2010-09-22 14:03:17
不,对不起-不可能。还原在备份时还原的文件。Schinking必须在此之后或在采取备份之前完成。
发布于 2010-09-23 12:51:29
如果您的磁盘空间紧张,那么您可以将.bak文件放在网络共享上,然后从那里恢复它。如果您使用域帐户运行sql服务器,则应该可以工作&给共享足够的权限读取该文件。
另一个选项是以前的“你”(但只有在运行server 2008 r2时有用),那就是Server支持直接创建数据库文件到共享中,而不必使用跟踪&我可以从个人经验中看出它是有效的!因此,您可以通过移动到共享来进行恢复。
发布于 2010-09-22 15:00:15
一般说来,不。一些随机的想法,可能对你有帮助,也可能没有帮助:
最后,我也喜欢我的生产数据库中的一些“肘部空间”,但是没有100 do总容量的90 do听起来有点极端。以下步骤可能为您提供所需的内容,并且不应影响生产:
DBCC SHRINKFILE ('myfile.MDF', TRUNCATEONLY)以暂时释放文件末尾的任何空闲空间( TRUNCATEONLY不是IO密集型的,也不会分段索引)DBCC SHRINKFILE。ALTER DATABASE MODIFY FILE将生产数据文件重新增长回原来的大小。使用这些步骤不应该产生任何生产影响。唯一的风险是,如果某些数据恰好位于100‘t数据文件的末尾,那么步骤(1)将不会释放多少空间。
https://serverfault.com/questions/183588
复制相似问题