2009-08-12 7 views

Répondre

46

J'interroger le information_schema - ce qui a des vues qui sont beaucoup plus lisibles que les tables sous-jacentes.

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE '%create%' 
+0

Ça a marché! Meilleure version aussi. – pencilslate

5
select object_name(c.object_id) as table_name 
    , schema_name(t.schema_id) as schema_name 
    from sys.columns c 
    join sys.tables t on c.object_id = t.object_id 
    where c.name=N'CreatedDate'; 

Il est un peu plus compliqué si vous voulez alsoother propriétés de la table, mais vous référer aux vues de catalogue d'objets comme sys.tables, sys.columns etc.

+0

je suis l'erreur « nom de colonne non valide « schema_id » – pencilslate

+1

T son a travaillé! Sélectionnez nom_objet (ID_objet_sq) comme nom_table , nom_schéma (nom_schéma) comme nom_schéma à partir de sys.columns sc, sys.tables st où sc.name = N'CreatedDate '; – pencilslate

+0

wrigth, j'écrivais la requête de la mémoire, j'ai oublié sys.columns ne stocke pas le schéma. –

0

Même chose, mais de manière ANSI

SELECT * DE INFORMATION_SCHEMA.TABLES OÙ TABLE_NAME IN ( SELECT TABLE_NAME DE INFORMATION_SCHEMA.COLUMNS OÙ COLUMN_NAME = 'CreateDate' )

2

Mon préféré ...

SELECT objParent.name AS parent, obj.name, col.* 
FROM sysobjects obj 
    LEFT JOIN syscolumns col 
     ON obj.id = col.id 
    LEFT JOIN sysobjects objParent 
     ON objParent.id = obj.parent_obj 
WHERE col.name LIKE '%Comment%' 
    OR obj.name LIKE '%Comment%' 

Au-dessus Je cherche "Commentaire". Supprimez les signes de pourcentage si vous souhaitez une correspondance directe.

Cette recherche tables, des champs et des choses comme les noms de clé primaire, les contraintes, les points de vue, etc.

Et quand vous voulez rechercher dans StoredProcs après singeries avec les tables (et la nécessité de faire le match de procs), utilisation ce qui suit ...

SELECT name 
FROM sys.procedures 
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%Comment%' 

J'espère que ça aide, je trouve ces deux requêtes extrêmement utiles.

0

Vous n'avez pas besoin de taper la requête SQL pour cela dans SQL Server 2008.

Dans SSMS Explorateur d'objets choisir bases de données ou tables de la base requise (si vous devez effectuer une recherche dans une base de données), ouvrir le menu Affichage- -> Détails de l'Explorateur d'objets (appuyez sur F7), tapez% CreatedDate% dans la zone de texte Rechercher, ENTRÉE, profitez de

+0

remarquablement cela n'a pas fonctionné; il trouve tous les autres types d'objets que SSMS montre dans son navigateur –

6

Vous pouvez également essayer en utilisant l'un des nombreux outils tiers disponibles pour cela.

Les requêtes sont parfaites pour les recherches simples, mais si vous avez besoin de plus de manipulations de données, recherchez des références et voilà où vous pouvez faire un bien meilleur travail avec celles-ci.

En outre, ceux-ci sont très utiles lorsque certains objets sont cryptés et que vous devez rechercher

J'utilise ApexSQL Search ce qui est gratuit, mais il y a aussi beaucoup d'autres (également gratuit) sur le marché tels que Red Porte ou ensemble d'outils SSMS.

1

Utilisez cette requête:

SELECT 
    t.name AS table_name, 
    SCHEMA_NAME(schema_id) AS schema_name, 
    c.name AS column_name , * 
FROM sys.tables AS t 
    INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 
Where 
    (c.name LIKE '%' + '<ColumnName>' + '%') 
    AND 
    (t.type = 'U') -- Use This To Prevent Selecting System Tables 
1

Pour moi, je n'avoir accès en lecture à courir querys donc je dois utiliser cette fonction est souvent ici ce que j'utilise:

SELECT * 
FROM INFORMATION_SCHEMA.TABLES 
where TABLES.TABLE_NAME like '%your table name here%' 

Vous pouvez remplacer. TABLEAUX avec .Columns alors il ressembler à ceci:

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE columns.COLUMN_NAME like '%your column name here%' 
Questions connexes