116 votes

Recherche de noms de tables

J'utilise la méthode suivante pour rechercher des chaînes de caractères dans les procédures stockées d'une base de données spécifique :

USE DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'

Est-il facile de modifier ce qui précède afin de rechercher les noms de tables dans une base de données spécifique "DBname" ?

186voto

NeshaSerbia Points 21

J'utilise ceci et cela fonctionne bien

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME LIKE '%%'

90voto

RichardTheKiwi Points 58121
select name
  from DBname.sys.tables
 where name like '%xxx%'
   and is_ms_shipped = 0; -- << comment out if you really want to see them

13voto

ransems Points 11

Si vous souhaitez consulter toutes les tables de toutes les bases de données sur l'ensemble du serveur et obtenir un résultat, vous pouvez utiliser la fonction non documentée sp_MSforeachdb procédure :

sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''

9voto

40-Love Points 1333

Vous pouvez également utiliser le bouton Filtre pour filtrer les tableaux contenant une certaine chaîne. Vous pouvez faire de même avec les procédures stockées et les vues.

enter image description here

7voto

GarethD Points 30173

Je suppose que vous voulez passer le nom de la base de données en tant que paramètre et non pas simplement l'exécuter :

SELECT  *
FROM    DBName.sys.tables
WHERE   Name LIKE '%XXX%'

Si c'est le cas, vous pouvez utiliser le SQL dynamique pour ajouter le dbname à la requête :

DECLARE @DBName NVARCHAR(200) = 'YourDBName',
        @TableName NVARCHAR(200) = 'SomeString';

IF NOT EXISTS (SELECT 1 FROM master.sys.databases WHERE Name = @DBName)
    BEGIN
        PRINT 'DATABASE NOT FOUND';
        RETURN;
    END;

DECLARE @SQL NVARCHAR(MAX) = '  SELECT  Name
                                FROM    ' + QUOTENAME(@DBName) + '.sys.tables
                                WHERE   Name LIKE ''%'' + @Table + ''%''';

EXECUTE SP_EXECUTESQL @SQL, N'@Table NVARCHAR(200)', @TableName;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X