2014-08-28 2 views
2

Je dois identifier une table qui est mentionnée n'importe où dans la base de données (dans proc, vues, etc.). J'ai essayé de trouver une requête en ligne, mais je n'ai pas pu la trouver. Toute aide est la bienvenue!Nécessité d'identifier une table dans tous les objets de la base de données

+2

Vous ne savez pas pourquoi votre question a été déclassée. Cela me semble totalement sur le sujet et quelque chose que les gens doivent trouver de temps en temps. –

+1

Vous pourriez trouver une solution basée sur une requête [ici ...] (http://stackoverflow.com/questions/1584107/sql-server-2005-search-views-for-certain-database-objects) – AHiggins

+1

Ou [ici ] (http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/06/a-handy-search-procedure.aspx). –

Répondre

2

J'utilise souvent ce bout quand je suis à la recherche des dépendances. Dans ce cas, vous devez remplacer le texte avec ce que vous recherchez (en supposant que vous êtes sur MS SQL Server):

USE [DBNAME] 

SELECT OBJECT_NAME(id) 
FROM syscomments 
WHERE [text] LIKE '%enter_search_here%' 
GROUP BY OBJECT_NAME(id) 

Vous pouvez également rechercher des types d'objets spécifiques en ajoutant un chèque de propriété d'objet:

WHERE OBJECTPROPERTY(id, 'IsTable') = 1 

Voici un LIST de propriétés d'objet utiles!

+2

Deux problèmes avec 'syscomments': (1) c'est une vue rétrocompatible qui a été abandonnée et ne devrait pas être utilisée (utilisez' sys.sql_modules' à la place), et (2) elle brise les procédures> 4000 caractères sur plusieurs lignes, Il y a donc une chance que des procédures manquent parce que votre terme de recherche est tombé à la limite. [Voir cet article] (http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/06/a-handy-search-procedure.aspx). –

+1

Ah. Merci pour le conseil Aaron! –

Questions connexes