Un moyen légèrement meilleur que le comptage des caractères consiste à utiliser les informations schema.routines. Vous pouvez résumer la longueur de chaque Définition de routine comme (Note chaque définition routine max à 4000 caractères, voir ci-dessous pour une méthode qui ne dispose pas de cette restriction):
select Sum(Len(Routine_Definition)) from information_schema.routines
where routine_type = 'PROCEDURE'
Ou vous pouvez retourner la longueur chaque sp
select Len(Routine_Definition), * from information_schema.routines
where routine_type = 'PROCEDURE'
Il est peu probable que la durée de vos procédures stockées soit le problème. Généralement, le manque d'espace avec une base de données est dû à des choses comme ne pas sauvegarder le fichier journal (puis le réduire en utilisant dbcc shrinkfile ou dbcc shrinkdatabase).
En Sql 2000, voici une routine qui fournirait la longueur sans la limite de 4000 caractères supérieur à:
DECLARE @Name VarChar(250)
DECLARE RoutineCursor CURSOR FOR
select Routine_Name from information_schema.routines where routine_type = 'PROCEDURE'
DECLARE @Results TABLE
( SpName VarChar(250),
SpLength Int
)
CREATE TABLE ##SpText
( SpText VarChar(8000) )
OPEN RoutineCursor
FETCH NEXT FROM RoutineCursor INTO @Name
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO ##SpText (SpText) EXEC sp_helptext @Name
INSERT INTO @Results (SpName, SpLength) (SELECT @Name, Sum(Len(SpText)) FROM ##SpText)
TRUNCATE TABLE ##SpText
FETCH NEXT FROM RoutineCursor INTO @Name
END
CLOSE RoutineCursor
DEALLOCATE RoutineCursor
DROP TABLE ##SpText
SELECT SpName, SpLength FROM @Results ORDER BY SpLength DESC
SELECT Sum(SpLength) FROM @Results
Nice !! Points bonus pour me donner aussi la taille des fonctions Triggers, Views et Scalar! – BradC