Point d’entrée du stockage physique des objets dans SQL Server

La requête suivante permet de connaître le point d’entrée de tout objets stockant des données dans MS SQL Server.

Cette requête utilise une vue interne de nom sys.system_internals_allocation_units.
Le résultat de cette vue propose pour chaque objet (table/index/partition) la première page stockant des données de cet objet, la page racine de l’index (pour une table en HEAP, ces deux pages sont identiques) et la première page IAM (Index Allocation Map) indiquant les extensions utilisés par cet objet dans les 64 000 premières extensions du fichier (soit 4 Go).

SELECT s.name AS TABLE_SCHEMA, o.name AS TABLE_NAME,
       i.name AS INDEX_NAME,
       o.object_id, i.index_id,
       p.partition_number,
       iau.allocation_unit_id,
       i.type_desc AS TYPE_INDEX,
       iau.type_desc AS TYPE_ALLOCATION,
       CAST(CAST(SUBSTRING (iau.first_page, 6, 1) +
                 SUBSTRING (iau.first_page, 5, 1) AS INT)
            AS VARCHAR(6)) + ':' +
          CAST(CAST(SUBSTRING (iau.first_page, 4, 1) +
                    SUBSTRING (iau.first_page, 3, 1) +
                    SUBSTRING (iau.first_page, 2, 1) +
                    SUBSTRING (iau.first_page, 1, 1) AS INT)
            AS VARCHAR (20)) AS PAGE_1,
       CAST(CAST(SUBSTRING (iau.root_page, 6, 1) +
                 SUBSTRING (iau.root_page, 5, 1) AS INT)
            AS VARCHAR(6)) + ':' +
          CAST(CAST(SUBSTRING (iau.root_page, 4, 1) +
                    SUBSTRING (iau.root_page, 3, 1) +
                    SUBSTRING (iau.root_page, 2, 1) +
                    SUBSTRING (iau.root_page, 1, 1) AS INT)
            AS VARCHAR (20))  AS PAGE_RACINE,
       CAST(CAST(SUBSTRING (iau.first_iam_page, 6, 1) +
                 SUBSTRING (iau.first_iam_page, 5, 1) AS INT)
            AS VARCHAR(6)) + ':' +
          CAST(CAST(SUBSTRING (iau.first_iam_page, 4, 1) +
                    SUBSTRING (iau.first_iam_page, 3, 1) +
                    SUBSTRING (iau.first_iam_page, 2, 1) +
                    SUBSTRING (iau.first_iam_page, 1, 1) AS INT)
            AS VARCHAR (20)) AS PAGE_IAM_1
FROM   sys.objects AS o
       INNER JOIN sys.schemas AS s
             ON o.schema_id = s.schema_id
       INNER JOIN sys.indexes AS i
             ON o.object_id = i.object_id  
       INNER JOIN sys.partitions AS p
             ON i.object_id = p.object_id
             AND i.index_id = p.index_id      
       INNER JOIN sys.system_internals_allocation_units AS iau
             ON p.partition_id = iau.container_id;

Résultat :

Résultat présentant les pages racine, d'entrée et IAM (Index Allocation Map) des tables et index de SQL Server

Résultat présentant les pages racine, d’entrée et IAM (Index Allocation Map) des tables et index de SQL Server

Le site web sur le SQL et les SGBDR
MVP Microsoft SQL Server


Frédéric Brouard, alias SQLpro, ARCHITECTE DE DONNÉES
Expert  S.G.B.D  relationnelles   et   langage  S.Q.L
Moste  Valuable  Professionnal  Microsoft  SQL Server
Société SQLspot  :  modélisation, conseil, formation,
optimisation,  audit,  tuning,  administration  SGBDR
Enseignant: CNAM PACA, ISEN Toulon, CESI Aix en Prov.

L’ntreprise SQL Spot

Laisser un commentaire