Sql server 2008数据库的mdf文件比预期的大

我有一个包含许多图像的Sql Server 2008数据库。 理论上他们应该占据数据库的大部分空间。

我把图片移到了Filestrem字段,但是mdf的大小并没有减less太多。 这怎么可能? 我怎样才能检查什么是占用所有这些空间内的MDF文件? 我试图缩小mdf文件保留一些可用的增长空间,但它不会做太多。 我努力保持足够低的大小,以保持在更快的C硬盘驱动器的MDF文件。

我也希望Filestream文件夹会比现在占用更多的空间。

Filestream实现之前的大小:

mdf -> 40Gb or less ldf -> raughly 90Gb 

目前的规模:

 mdf -> 39Gb ldf -> 119Gb Filestream folder -> 7.8Gb 

我把图片移到了Filestrem字段,但是mdf的大小并没有减less太多。 这怎么可能?

因为文件缩小不是神奇的事情发生。 这发生在你告诉sql server试图破坏它的时候。 这也是博客数据被慢慢抛弃的一个观点 – 速度相当低。 可能需要一段时间的大数据。

我努力保持足够低的大小,以保持在更快的C硬盘驱动器的MDF文件。

只要C不是固态硬盘,这让我感到畏缩;)

我也希望Filestream文件夹会比现在占用更多的空间。

为什么?

或者:取消一个报告,并找出你的空间。 也许你忽略了一些东西? 如果你期望现在比filestream有更多的数据,也许你不会移动所有的数据? 我会运行一个报告,看看这个空间有什么用处 – 它们可以作为pipe理工作室的标准报告。

我没有任何关于filestream的经验,我正在使用SQL 2005,但是我可以右键单击MSSMS中的一个数据库,进入报告>标准报告>磁盘使用情况,并获得一个很好的用于mdf的空间饼图。 你也可以运行这个查询来确定db中哪些表的行数最多(不一定占用最多的空间,但可能会帮助你 – 从http://blog.sqlauthority.com/2009/01/13/ sql-server-find-row-count-in-table-find-maximum-table-in-database-t-sql / )。

 SELECT OBJECT_NAME(OBJECT_ID) TableName, st.row_count FROM sys.dm_db_partition_stats st WHERE index_id < 2 ORDER BY st.row_count DESC GO 

最后,我再也没有这样做过,我相信你可以创build多个mdf并在它们之间分割你的数据,在快速的驱动器上保存你想要访问的数据。 http://blog.sqlauthority.com/2008/01/25/sql-server-2005-database-table-partitioning-tutorial-how-to-horizo​​ntal-partition-database-table/