计算表记录的最大存储大小?

时间:2013-01-28 13:09:04

标签: sql sql-server sql-server-2005

有没有办法确定SQL Server过去手动记录的最大大小是多少?例如:

CREATE TABLE test (
    id INT PRIMARY KEY IDENTITY(1, 1),
    name VARCHAR(256),
    test_date DATETIME
)

所以,如果我没有弄错的话,在手动计算时,该记录可能最多为272 bytes。但是,我有一个包含更多列的表,我需要为多个表执行此操作,因此我想知道是否可以通过简单查询来执行此操作。

我在INFORMATION_SCHEMA.TABLES甚至INFORMATION_SCHEMA.COLUMNS中找不到任何信息,例如我认为我可以做一个简单的SUM。此外,sysobjectssyscolumns似乎没有必要的信息。 syscolumns表确实有一个length字段,但这不是实际的存储空间大小。

全部谢谢!

1 个答案:

答案 0 :(得分:4)

试试这个:

Select  schema_name(T.schema_id) As SchemaName,
        T.Name As TableName,
        Sum(C.max_length) As RowSize
From    sys.tables T
        Inner Join sys.columns C
            ON T.object_id = C.Object_ID
        INNER JOIN sys.types S
            On C.system_type_id = S.system_type_Id
Group By schema_name(T.schema_id),
        T.Name
Order By schema_name(T.schema_id),
        T.Name