Bonjour,
existe-til une commande pour lister toutes les tables qui ont le colonne X ?
Merci
Bonjour,
existe-til une commande pour lister toutes les tables qui ont le colonne X ?
Merci
Les vues information_schema.tables et information_schema.columns te permettront de retrouver ces informations
Ou encore avec les tables SYS..... avec la requête suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT TABLES.NAME [TABLE], COLONNES.NAME [COLUMN], TYPES.NAME [TYPE], COLONNES.LENGTH [LONGUEUR] FROM DBO.SYSCOLUMNS AS COLONNES INNER JOIN DBO.SYSOBJECTS AS TABLES ON TABLES.ID = COLONNES.ID INNER JOIN DBO.SYSTYPES AS TYPES ON TYPES.XTYPE = COLONNES.XTYPE WHERE COLONNES.NAME like '%maColonne%' AND TABLES.TYPE = 'U' AND TYPES.NAME != 'sysname'
C'est quand même plus simple de faire :
Que de se farcir les tables systèmes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = ???
En plus l'utilisation des tables systèmes est une grande stupidité :
1) elles évoluent d'une version à l'autre de SQL Server : donc pas de portabilité
2) elles sont réservées à l'usage interne donc dificilement compréhensibles
3) elles ne seront plus disponibles dans 2008 !
A +
Merci pour le tips, je connaissais pas et c'est bien utile.
Mais il ne faut pas s'énerver comme cela quand même (ton message m'a un peu surpris je l'avoue).
Je vois pas où est le souci dans le cadre d'une utilisation ponctuelle comme la mienne (je cherchais une table dans une base immense).
De plus, nous sommes sur un forum communautaire et le but est le partage d'info, donc, on est pas censé tout connaître même qd on répond
Et, pour info, j'ai testé la requête par les tables systèmes et cela fonctionne très bien sur SQL Server 2008.
Bonne journée à tous,
Tiens, d'ailleurs SQLPro s'était un peu enflammé pour rien : les tables système n'ont pas disparu avecn SQL Server 2008, mais son même encore présentes dans SQL Server 2014.
Quant à leur évolution, ça doit pas tant bouger que ça, puisque la requête de elsuket fonctionne sous SQL Server 2014, soit 7 ans plus tard et 3 versions plus tard
Mais bon, ça ne change rien au sens du message de SQLPro : il y a des vues "publiques" qui permettent de trouver l'information, c'est donc mieux que de passer par les tables systèmes qui sont bien moins pratiques à utiliser
Non, les tables système ne sont plus atteignables depuis la version 2005 de SQL Server. Seules des vues systèmes sont atteignables.
Par exemple si vous demandez le plan de requête de :
ou encore de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM sys.columns
Vous verrez que les deux vues font appel à la table syscolpars que vous ne pouvez requêter !
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM INFORMATION_SCHEMA.COLUMNS
A +
J'ai pas dit le contraire, juste que les objets appelés par le requête de Elsuket sont toujours dispos et que sa requête marche encore (ce que tu semblais remettre en question à partie de la version 2008 )
Après je ne remets pas en cause le bien fondé de ton intervention
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager