Question

Je travaille sur un SQL Server 2008 Db qui a beaucoup de tables en elle (environ 200). Un grand nombre de ces tables contiennent un champ par le nom « CreatedDate ». Je suis en train d'identifier tout le schéma de table avec ce domaine particulier.

Y at-il une requête SQL pour le faire?

Était-ce utile?

La solution

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%'

Autres conseils

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

Les requêtes sont parfaits pour des recherches simples, mais si vous avez besoin de faire plus la manipulation des données, la recherche des références et une telle c'est là que vous pouvez faire un bien meilleur travail avec ces derniers.

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

J'utilise ApexSQL Recherche qui est gratuit, mais il y a aussi beaucoup d'autres (également gratuit ) sur le marché tels que Red Gate ou SSMS Tool pack.

  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.

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".

Laissez tomber les signes de pourcentage si vous voulez une correspondance directe.

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

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

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

Hope that helps, je trouve ces deux requêtes extrêmement utiles.

Pour moi, je ne l'ai 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 .TABLES avec .Columns il serait alors ressembler à ceci:

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

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

La même chose, mais de manière ANSI

SELECT     * DE     INFORMATION_SCHEMA.TABLES OÙ     TABLE_NAME IN (                     SÉLECTIONNER                         NOM DE LA TABLE                     DE                         INFORMATION_SCHEMA.COLUMNS                     OÙ                         COLUMN_NAME = 'CreateDate'                   )

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

Dans SSMS Explorateur d'objets choisir les bases de données ou les tableaux de la base de données requise (si vous devez effectuer une recherche dans une base de données), ouvrir le menu Affichage -> Explorateur d'objets Détails (alternativement appuyez sur F7), tapez% CreatedDate% en zone de texte de recherche, ENTRER , profitez

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top