我被要求对特定数据库中使用的空间进行全面细分.我知道我可以在SQL Server 2005中使用sys.dm_db_partition_stats来计算数据库中每个表使用的空间大小,但有没有办法确定数据库中存储过程的个别和总大小?(当然,没有打开每一个并计算字符数.)
存储过程使用的总空间不太可能很大(与实际数据相比),但有数百个,它可能会相加.
;WITH ROUTINES AS ( -- CANNOT use INFORMATION_SCHEMA.ROUTINES because of 4000 character limit SELECT o.type_desc AS ROUTINE_TYPE ,o.[name] AS ROUTINE_NAME ,m.definition AS ROUTINE_DEFINITION FROM sys.sql_modules AS m INNER JOIN sys.objects AS o ON m.object_id = o.object_id ) SELECT SUM(LEN(ROUTINE_DEFINITION)) FROM ROUTINES