我有一个场景,每个用户都被分配了2MB的数据库空间。现在,我必须显示他们分配的空间的感知使用情况,为此,我需要知道表中单个记录的大小。
我曾尝试使用sp_spaceused,甚至编写了一个使用数据长度的自定义过程。但他们在结果上表现出巨大的差异。
有没有什么办法能把这件事做好。
发布于 2009-04-21 07:05:13
您可以用一个相当复杂的公式来计算一行的大小(行数)。有关确切的详细信息,请参阅Books Online (ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/81fd5ec9-ce0f-4c2c-8ba0-6c483cea6c75.htm)。
简而言之:
获取列数,并根据固定长度数据类型的数据类型确定每列的大小。
计算任何可为空的列使用的空间,然后计算行空间:
Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap +4
https://stackoverflow.com/questions/771248
复制相似问题