Comment puis-je savoir quelle procédure stockée ou trigger utilise une table sur SQL Server 2008 R2?

dba.stackexchange https://dba.stackexchange.com/questions/7956

Question

Ceci est le cas que dans le DB je vérifie, il y a une table archive qui conserve l'historique de l'utilisateur, et il existe une procédure de déclenchement ou magasin qui après un certain temps Supprimer les lignes de ce tableau, afin d'éviter la surdimensionner du même, je ne l'ai pas la conception de la DB, je prends juste le maintien d'une application qui utilise ce DB, donc je ne sais pas le nom de ces procédures stockées ou déclencheurs, ce que je veux faire est de localiser cette procédure stockée ou un déclencheur, vérifier le code et le modifier pour laisser cette « histoire de l'utilisateur » plus sur la table.

Quelqu'un m'a dit de vérifier la « sysobjects » table, où je peux réellement voir quelque chose avec le même nom de la table, mais c'est la seule information que j'ai pu récupérer, tout conseiller?

Merci.

Était-ce utile?

La solution

Rechercher tout le code en utilisant sys.sql_modules

SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules sm
WHERE definition LIKE '%Mytable%'

Ou utilisez Red Gate SQL Recherche qui est complètement libre

Ne pas : utilisez syscomments ou INFORMATION_SCHEMA.RUBBISH

Autres conseils

Essayez ApexSQL Recherche

ApexSQL recherche est un complément GRATUIT SQL Server Management Studio et Visual Studio qui, entre autres fonctions, a la vue caractéristique Dépendances. La fonction Afficher les dépendances a la capacité de visualiser tous les rapports des objets de base de données SQL, y compris entre les objets cryptés et système, serveur SQL 2012 objets spécifiques et objets stockés dans des bases de données cryptées avec le cryptage transparent des données (de TDE)

La fonction Afficher les dépendances vous permet également de configurer et de personnaliser la mise en page du diagramme de dépendances visuelles, y compris les relations qui seront présentées, la mise en page et la taille du diagramme généré, et la profondeur vers le bas exercice des dépendances

Disclaimer: travail I pour ApexSQL comme ingénieur de support

Pour référence ultérieure à partir de 2008 il y a aussi une DMV qui peut être utilisé. sys.dm_sql_referencing_entities. Je préfère généralement à l'aide SQL_Modules car il évite les faux positifs entre autres. Je discutai ici mais, fondamentalement, si vous avez un morceau de code comme ceci:

SELECT OBJECT_SCHEMA_NAME(object_id), OBJECT_NAME(object_id) 
FROM sys.sql_modules WHERE [definition] LIKE '%ABC%'

Vous finir avec les résultats de la table ABC, la table ABCLog la vue vw_ABC, la procédure stockée sp_Update_ABC etc. De plus au mieux de ma connaissance, la DMV se chargera SPs chiffrés ainsi que non crypté alors que la méthode sql_modules fonctionne uniquement avec SPs non chiffrés.

La version de la même DMV requête est la suivante:

SELECT * FROM sys.dm_sql_referencing_entities('dbo.ABC', 'OBJECT')

Vous pouvez également utiliser le sys.sql_expression_dependencies vue catalogue. Utilisez cette requête:

SELECT 
referencing_object_name = obj.name, 
referencing_object_type_desc = obj.type_desc, 
referenced_object_name = referenced_entity_name
FROM sys.sql_expression_dependencies sd 
INNER JOIN sys.objects obj 
ON sd.referencing_id = obj.[object_id] 
WHERE referenced_entity_name = 'MyTable'
Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top