Afficher ou cacher une table dans SSMS

De temps en temps, lors des formations ou des prestations de conseil, on me demande s’il est possible de ne pas afficher une ou plusieurs tables dans l’arborescence de SSMS (le volet de gauche – Object Explorer).

Sans pour autant toucher aux droits des utilisateurs au niveau des objets, il est tout a fait possible de cacher une table en utilisant les propriétés étendues.

Voici un bout de code qui vous permet de réaliser cette opération :

-- Création d'une base de test
CREATE DATABASE TestDB
GO

USE TestDB
GO

-- Création d'une table
CREATE TABLE Table1
(
	c1 INT IDENTITY(1,1)
)
GO

maintenant que la table est créée, vérifiions si elle est bien visible dans SSMS :

image

La table est bien affichée.

Rendons la invisible :


EXEC sp_addextendedproperty 
	@name = N'microsoft_database_tools_support', 
	@value = '1', 
	@level0type ='schema', 
	@level0name ='dbo',
	@level1type = 'table', 
	@level1name = N'Table1'

Vérifions l’affichage dans l’object explorer :

image

La table n’apparait plus mais reste utilisable (notez que l’intellisense fonctionne):

imageimage

La table reste visible en interrogeant les informations système :

image

Voici a présent le script SQL pour que la table soit à nouveau visible dans SSMS :

EXEC sp_dropextendedproperty 
	@name = N'microsoft_database_tools_support', 
	@level0type ='schema', 
	@level0name ='dbo',
	@level1type = 'table', 
	@level1name = N'Table1'

Vérifions si la table apparait :

image

 

Hope this helps.

A propos Christophe

Consultant SQL Server Formateur certifié Microsoft MVP SQL Server MCM/MCSM SQL Server
Cet article, publié dans Non classé, est tagué . Ajoutez ce permalien à vos favoris.

4 commentaires pour Afficher ou cacher une table dans SSMS

  1. Stephane dit :

    Il me plait bien cet article !
    Et je pense qu’il pourrait bien de me servir dans un avenir proche 😉

  2. Mathias Zimermann dit :

    Merci pour le conseil (même si sur mon poste cela ne fonctionne pas…)
    Cependant, comment faire pour masquer toutes les tables qui sont vides dans SSMS d’un coup, sans sélectionner table après table.
    Merci d’avance

    • Christophe dit :

      Bonjour

      L’article datant de 2011 il était tout a fait possible que cela ne fonctionne plus. Je viens des tester sur SQL Server 2019 avec SSMS 18.4 et le comportement attendu est bien là. En ajoutant le propriété étendue, la table disparaît bien de l’objet explorer.

      Si vous souhaitez ne plus afficher les tables, vides, le plus simple semble être un curseur sur sys.tables avec une jointure sur sys.partitions pour avoir le nombre de lignes.
      Ensuite dans le cors du curseur, exécuter la commande d’ajout de propriété étendue.
      Une question cependant, il est quand même relativement rare d’avoir des tables vides dans une base, pourquoi ne pas la dropper alors ?

      Christophe

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s