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

Administration SQL Server Discussion :

Liste des table heaps par databases


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    test
    Inscrit en
    Mai 2016
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : test
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2016
    Messages : 347
    Par défaut Liste des table heaps par databases
    bonjour a tous

    j'ai une instance de production qui contiens une vingtaine des bases de donnée j'aurai besoin d’afficher les listes des tables heaps pour ces différents bases de données

    la requête utilisée est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT SCH.NAME + '.' + TBL.NAME AS TableName
    FROM sys.tables AS TBL
    INNER JOIN sys.schemas AS SCH ON TBL.schema_id = SCH.schema_id
    INNER JOIN sys.indexes AS IDX ON TBL.object_id = IDX.object_id
        AND IDX.type = 0 -- = Heap 
    ORDER BY TableName
    y'a t'il une possibilité de faire une jointure avec sys.databases pour avoir une colonne qui contiens le non de la base de donnée

    merci pour vos aides

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Cette requête ne renvoie que les table dans la base courante.

    il faut donc, à partir de cette requête, en construire une dynamiquement qui aille chercher dans chaque base avec des UNION ALL. Vous pouvez à cette occasion ajouter une colonne indiquant la base source.

  3. #3
    Membre Expert
    Homme Profil pro
    DBA SQL Server
    Inscrit en
    Octobre 2012
    Messages
    862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA SQL Server
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 862
    Par défaut
    Essaye ça :

    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
    25
    26
    27
    28
     
    USE tempdb
    GO
    create table #NoClusteredIndex  (
    [Database Name] sysname,
    [TableName] varchar(256),
    [Recordcount] bigint
    )
    DECLARE @CMD VARCHAR(MAX)
    SET @CMD = N'use [?] 
    select db_name() as databasename,o.name,sum(p.rows) as recordcount
    from sys.objects o
    Join sys.partitions p on p.object_id=o.object_id
    where o.type= ''U''
    and o.object_id not in
    (select object_id from sys.indexes where type_desc=''CLUSTERED'')
    group by o.name,o.object_id,p.rows
    --order by p.rows desc'
     
    Insert into #NoClusteredIndex
    exec sp_MSForEachDB @CMD
     
    select [Database Name],[TableName],[Recordcount]
    from #NoClusteredIndex
    where [Database Name] not in('master','msdb','model','tempdb')
    and [Recordcount]>10000
    order by [Recordcount] desc
    drop table #NoClusteredIndex
    Ou ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select db_name(),o.name,o.object_id--,p.record_count
    from sys.objects o
    Join sys.dm_db_index_physical_stats (DB_ID(), default, default, default,'sampled') p
    on p.object_id=o.object_id and p.index_type_desc='HEAP'
    where o.type= 'U'
    and o.object_id not in
    (select object_id from sys.indexes where type_desc='CLUSTERED')
    order by p.record_count desc

  4. #4
    Membre éclairé
    Homme Profil pro
    test
    Inscrit en
    Mai 2016
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : test
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2016
    Messages : 347
    Par défaut
    merci bien janlouk ça fonctionne

Discussions similaires

  1. Liste des tables b'une base par taille
    Par tibal dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 26/07/2010, 16h33
  2. Réponses: 3
    Dernier message: 05/10/2007, 15h56
  3. liste des tables d'une database
    Par ep31 dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/06/2006, 14h29
  4. liste des tables par base
    Par rupert dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/05/2004, 09h38
  5. Liste des tables d'une bases de données spécifique
    Par faridos23 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/08/2003, 22h20

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