有没有办法确定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
。此外,sysobjects
和syscolumns
似乎没有必要的信息。 syscolumns
表确实有一个length
字段,但这不是实际的存储空间大小。
全部谢谢!
答案 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