IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Trouver un enregistrement DATETIME > à aujourd'hui sur TOUTES les tables


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Points : 41
    Points
    41
    Par défaut Trouver un enregistrement DATETIME > à aujourd'hui sur TOUTES les tables
    Bonjour


    Je cherche à faire une recherche de tous les enregistrements, toutes tables confondues, dont la colonne de type DATETIME est supérieure à aujourd'hui.

    Je sais trouver l'ensemble des colonnes de type DATETIME avec la tables dans laquelle ils se trouvent avec cette requette

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TABLE_name,COLUMN_name FROM information_SCHEMA.columns 
    WHERE Data_type='DATEtime'
    Pourrais je exploiter ceci pour aller vérifier les enregistrements des colonnes en questions dans leurs tables respectives afin de trouver des enregistrements supérieur à ce jour ?

    Ou alors il y a un autre moyen ?


    Merci d'avance

  2. #2
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Citation Envoyé par Gigli Voir le message
    Je sais trouver l'ensemble des colonnes de type DATETIME avec la tables dans laquelle ils se trouvent avec cette requette

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TABLE_name,COLUMN_name FROM information_SCHEMA.columns 
    WHERE Data_type='DATEtime'
    Pourrais je exploiter ceci pour aller vérifier les enregistrements des colonnes en questions dans leurs tables respectives afin de trouver des enregistrements supérieur à ce jour ?
    Oui, construisez des requetes dynamiques a partir de ces informations.

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Ptit_Dje Voir le message
    Oui, construisez des requetes dynamiques a partir de ces informations.
    Merci pour cette réponse ultra rapide

    Mais j'aimerais vous quémander ici de l'aide justement pour la syntaxe de la dite requête dynamique.

  4. #4
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Tout depend de ce que vous souhaitez faire...

    Celle-ci va vous generer un script que vous pourrez apres copier et executer manuellement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT 'if exists (select 1 from ' + TABLE_name + ' where ' + COLUMN_name + ' > getdate()) begin print ''' + TABLE_NAME + ' - ' +  COLUMN_name + ''' end' FROM information_SCHEMA.COLUMNS 
    WHERE Data_type='DATEtime'
    Apres je vous laisse regarder comment vous servir de cela pour vos besoins specifiques.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Hello.
    Histoire de vous donner une piste supplémentaire, voici un petit script que j'utilise pour obtenir les dates les plus récentes contenus dans les colonnes de type datetime. Ça donne parfois un indice sur l’inactivité de certaine application... (ok, c'est loin d'être optimal mais ça me dépanne parfois)
    Je le donne tel quel, à vous de l'adapter suivant vos besoins.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    -- surveillance des bases de données : donne les dernières dates entrées dans des champs de type datetime
    CREATE TABLE #TableCount ( table_schema varchar(250), table_name varchar(250), column_name varchar(250), min_date datetime, max_date datetime, card int
    	PRIMARY KEY ( table_schema , table_name , column_name ) )
     
    declare @sql nvarchar(1500)
    DECLARE db_cursor CURSOR FOR 
    	select N'insert into #TableCount select '''+ table_schema +''' table_schema, ''' + table_name + ''' table_name, ''' + column_name + ''' column_name, min('+column_name+') min_date , max('+column_name+') max_date , count(*) card from ['+ table_schema+ '].['+ table_name + ']' REQ
    	from information_schema.columns
    	where data_type = 'datetime'
     
    OPEN db_cursor 
    FETCH NEXT FROM db_cursor INTO @sql
     
    WHILE @@FETCH_STATUS = 0 
    BEGIN 
    	--print @sql
    	exec sp_executesql @sql
    	FETCH NEXT FROM db_cursor INTO @sql 
    END 
    CLOSE db_cursor 
    DEALLOCATE db_cursor
     
    select * from #TableCount order by max_date desc 
    drop TABLE #TableCount

Discussions similaires

  1. Nombre d'enregistrement sur toute les tables ?
    Par lolafrite dans le forum SQL
    Réponses: 2
    Dernier message: 30/10/2008, 16h22
  2. recherche sur toutes les tables
    Par galinette dans le forum Access
    Réponses: 1
    Dernier message: 29/06/2007, 12h16
  3. Réponses: 3
    Dernier message: 14/03/2007, 18h31
  4. Grant sur toutes les tables en même temps
    Par jer64 dans le forum SQL
    Réponses: 3
    Dernier message: 25/09/2006, 08h59
  5. Réponses: 4
    Dernier message: 06/09/2006, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo