Existe-t-il un utilitaire disponible pour compter les lignes totales de la procédure stockée, de la fonction et des vues créées par l'utilisateur dans une base de données?SQL Server SP, fonction, Afficher le compteur de lignes source
Répondre
Pour SQL Server 2005 et 2008.
Cela inclut tout le code, y compris des lignes blanches et de fuite des lignes vides, mais pas la dernière ligne (pas CRLF). Donc, c'est moyen ... mais ce serait toujours une approximation de toute façon.
WITH CRLF AS
(
SELECT
CHARINDEX('
', definition) AS CRLF,
SM.[object_ID]
FROM
sys.sql_modules SM
WHERE
OBJECT_NAME([object_ID]) not in ('fn_diagramobjects', 'sp_alterdiagram', 'sp_creatediagram', 'sp_dropdiagram', 'sp_helpdiagramdefinition', 'sp_helpdiagrams', 'sp_renamediagram', 'sp_upgraddiagrams', 'sysdiagrams')
UNION ALL
SELECT
CHARINDEX('
', definition, C.CRLF + 2),
SM.[object_ID]
FROM
sys.sql_modules SM
JOIN
CRLF C ON SM.[object_ID] = C.[object_ID]
WHERE
CHARINDEX('
', definition, C.CRLF + 2) > C.CRLF
)
SELECT
COUNT(*)
FROM
CRLF
OPTION
(MAXRECURSION 0)
Edit: Vous devrez peut-être OBJECTPROPERTY(SM.[object_ID], 'IsMSShipped') = 0
ou explicitement exclusions pour le code de diagramme etc
Edit 2:
De l'autre solution en réponse otehr, corrigées pour ne pas donner "-1" pour les contraintes de vérification et appliquer les mêmes filtres/types
select t.sp_name, sum(t.lines_of_code) as lines_ofcode, t.type_desc
from
(
select o.name as sp_name,
(len(c.text) - len(replace(c.text, char(13), ''))) as lines_of_code,
case when o.xtype = 'P' then 'Stored Procedure'
when o.xtype in ('FN', 'IF', 'TF') then 'Function'
end as type_desc
from sysobjects o
inner join syscomments c
on c.id = o.id
where --o.xtype in ('V', 'P', 'FN', 'IF', 'TF', 'TR')
--and
o.category = 0
AND
o.name not in ('fn_diagramobjects', 'sp_alterdiagram', 'sp_creatediagram', 'sp_dropdiagram', 'sp_helpdiagramdefinition', 'sp_helpdiagrams', 'sp_renamediagram', 'sp_upgraddiagrams', 'sysdiagrams')
) t
group by t.sp_name, t.type_desc
order by 1
COMPUTE SUM (sum(t.lines_of_code))
Ils donnent tous les mêmes résultats ici sur plusieurs bases de données. 4607 pour une base de données SQL Server 2005 SP2 ReportServer ...
Pas que je sache, mais vous pouvez parcourir les éléments dans sysobjects et exécuter sp_helptext
sur chaque proc et afficher et compter les retours à la ligne.
Si vous voulez une solution non CTE vous pourriez faire quelque chose comme ceci:
select sum(newlines) from ( select newlines = (datalength(definition) - datalength(replace(definition, ' ', ' ')))/2 from sys.sql_modules ) as a
- 1. fonction de partition dans SQL Server 2005
- 2. SQL Server -SP chemin d'exécution est stocké sur Stack?
- 3. Sql Server 2005 - Retour du GUID du SP
- 4. Récupère dynamiquement une valeur d'une variable dans SQL Server SP
- 5. Fonction de filtre d'index SQL Server 2005
- 6. SQL Server 2008 - à l'exception des lignes
- 7. SQL Select compteur par groupe
- 8. SQL Server AVG fonction bizarrement
- 9. Recherche de table Crystal Reports basée sur le paramètre SP
- 10. MS SQL Server COLUMNS_UPDATED() Fonction
- 11. SQL Server to Excel 2007 - Nouvelles lignes
- 12. Comment supprimer plusieurs lignes dans SQL Server
- 13. Fonction de tri personnalisée - de SQL Server
- 14. Fonction DECODE() dans SQL Server
- 15. Compte plusieurs lignes dans SQL Server Query
- 16. Linq to SQL paramètres SP
- 17. SQL Server 2005 Profiler Comment afficher l'intégralité de la chaîne de procédure stockée
- 18. ACCESS Jet SQL INT() Fonction -> Fonction SQL Server
- 19. SQL Server Taille maximale des lignes
- 20. Lignes en boucle dans SQL Server
- 21. Sql Server équivalent d'une fonction d'agrégation COUNTIF
- 22. SQL Server SP façon optimale d'obtenir plusieurs curseurs avec des données connexes
- 23. Comment afficher la source de DB2 SQL UDF
- 24. Insertion d'un nombre dynamique de lignes dans SQL Server
- 25. Contrôle de version de base de données SQL Server 2008 Suppression de SP et de fonctions
- 26. Liste de contrôle de source est vide après l'installation TFS 2008 Avec SP
- 27. SQL Server 2000 Fonction de création de date/heure
- 28. Sql lignes de sortie de wrap Server Reporting
- 29. Passage de plusieurs paramètres de la même colonne à SQL Server sélectionnez SP
- 30. Retourne le type nullable dans la fonction SQL Server
en quelque sorte ma solution est à venir avec une diff réponse à la vôtre. –
Merci gbn & Sam pour vos réponses. Essayé http://stackoverflow.com/questions/291574/query-to-list-sql-server-stored-procedures-along-with-lines-of-code-for-each-proc. Tous les trois donnent des résultats différents. Lequel considérer? –
@Rajganesh: comment différent? – gbn