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

Développement SQL Server Discussion :

Drop User "Cascade"


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 44
    Par défaut Drop User "Cascade"
    Bonjour,

    est-ce que vous avez deja créé un script pour supprimer un user avec tous ces objects?

    Merci a tous,
    Dnboa

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Que voulez vous dire supprimer un "user" avec tous ses objets ? Par défaut un utilisateur ne possède aucun objet....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 44
    Par défaut drop login
    Bonjour,

    J'aimerais que tous les objets créés par l'user/login TOTO soient supprimés si l'user TOTO est supprimé.

    Merci a vous,
    dnboa

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Le mode DROP CASCADE disponible dans certains SGBDR n'existe pas dans SQL Server pour des raisons de sécurité. Pour ces mêmes raisons il n'est pas souhaitable de supprimer l'utilisateur si celui-ci a des privilèges sur des objets qu'il n'a pas créé et enfin, ce n'est pas parce que vous supprimez l’utilisateur SQL que son compte de connexion va être supprimé lui aussi....
    Vous devez donc trouver vous même, tous les objets créés par ce propriétaire.

    Voici la requête pour ce faire

    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
    WITH T AS
    (SELECT principal_id AS P
     FROM   sys.database_principals
     WHERE  name = 'TOTO')
    SELECT name, type_desc 
    FROM   sys.objects 
    WHERE  principal_id IN (SELECT P FROM T)
    UNION ALL
    SELECT o.name, type_desc 
    FROM   sys.objects AS o
           JOIN sys.schemas AS s
    	      ON o.schema_id = s.schema_id
    WHERE  o.principal_id IS NULL 
     AND   s.principal_id IN (SELECT P FROM T)
    UNION ALL
    SELECT name, 'SCHEMA'
    FROM   sys.schemas AS s
    WHERE  principal_id IN (SELECT P FROM T);
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 44
    Par défaut drop login
    merci! je vais essayer de retrouver tous les objets.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Voici les commandes à passer et dans l'ordre :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    WITH 
    T AS
    (SELECT principal_id AS P
     FROM   sys.database_principals
     WHERE  name = 'TOTO'),
    T_DROP AS
    (
    SELECT 1 AS ORDRE1, 
           CASE type_desc
              WHEN 'FOREIGN_KEY_CONSTRAINT' THEN 0
              WHEN 'VIEW' THEN 1
              WHEN 'SQL_STORED_PROCEDURE' THEN 2
              WHEN 'AGGREGATE_FUNCTION' THEN 3
              WHEN 'CLR_SCALAR_FUNCTION' THEN 4
              WHEN 'CLR_STORED_PROCEDURE' THEN 5
              WHEN 'CLR_TABLE_VALUED_FUNCTION' THEN 6
              WHEN 'CLR_TRIGGER' THEN 7
              WHEN 'REPLICATION_FILTER_PROCEDURE' THEN 8
              WHEN 'SQL_INLINE_TABLE_VALUED_FUNCTION' THEN 9
              WHEN 'SQL_SCALAR_FUNCTION' THEN 10
              WHEN 'SQL_TABLE_VALUED_FUNCTION' THEN 11
              WHEN 'SYNONYM' THEN 12
              WHEN 'SERVICE_QUEUE' THEN 50
              WHEN 'USER_TABLE' THEN 51
              WHEN 'TABLE_TYPE' THEN 100
              WHEN 'PLAN_GUIDE' THEN 101
              WHEN 'RULE' THEN 102
              WHEN 'SEQUENCE_OBJECT' THEN 103
              WHEN 'DEFAULT_CONSTRAINT' THEN 104
           END AS ORDRE2,               
           'DROP ' + type_desc + '[' + s.name + '].[' + o.name + '];' COLLATE French_CI_AI AS SQL_COMMAND 
    FROM   sys.objects AS o
           JOIN sys.schemas AS s
    	    ON o.schema_id = s.schema_id
    WHERE  o.principal_id IN (SELECT P FROM T)
    UNION ALL
    SELECT 2 AS ORDRE1, 
           CASE type_desc
              WHEN 'FOREIGN_KEY_CONSTRAINT' THEN 0
              WHEN 'VIEW' THEN 1
              WHEN 'SQL_STORED_PROCEDURE' THEN 2
              WHEN 'AGGREGATE_FUNCTION' THEN 3
              WHEN 'CLR_SCALAR_FUNCTION' THEN 4
              WHEN 'CLR_STORED_PROCEDURE' THEN 5
              WHEN 'CLR_TABLE_VALUED_FUNCTION' THEN 6
              WHEN 'CLR_TRIGGER' THEN 7
              WHEN 'REPLICATION_FILTER_PROCEDURE' THEN 8
              WHEN 'SQL_INLINE_TABLE_VALUED_FUNCTION' THEN 9
              WHEN 'SQL_SCALAR_FUNCTION' THEN 10
              WHEN 'SQL_TABLE_VALUED_FUNCTION' THEN 11
              WHEN 'SYNONYM' THEN 12
              WHEN 'SERVICE_QUEUE' THEN 50
              WHEN 'USER_TABLE' THEN 51
              WHEN 'TABLE_TYPE' THEN 100
              WHEN 'PLAN_GUIDE' THEN 101
              WHEN 'RULE' THEN 102
              WHEN 'SEQUENCE_OBJECT' THEN 103
              WHEN 'DEFAULT_CONSTRAINT' THEN 104
           END AS ORDRE2,               
           'DROP ' + type_desc + '[' + s.name + '].[' + o.name + '];'  COLLATE French_CI_AI  
    FROM   sys.objects AS o
           JOIN sys.schemas AS s
    	      ON o.schema_id = s.schema_id
    WHERE  o.principal_id IS NULL 
     AND   s.principal_id IN (SELECT P FROM T)
    UNION ALL
    SELECT 3, 0, 'DROP SCHEMA [' + name + '];'  COLLATE French_CI_AI 
    FROM   sys.schemas AS s
    WHERE  principal_id IN (SELECT P FROM T)
    )
    SELECT SQL_COMMAND
    FROM   T_DROP
    ORDER  BY ORDRE1, ORDRE2
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Drop user cascade
    Par epiik dans le forum Administration
    Réponses: 1
    Dernier message: 04/11/2011, 13h13
  2. Drop user cascade exception
    Par bobo10 dans le forum Administration
    Réponses: 3
    Dernier message: 21/01/2010, 23h50
  3. Drop user cascade
    Par mboubidi dans le forum Administration
    Réponses: 3
    Dernier message: 21/12/2009, 17h17
  4. [9i] DROP USER et ORA-01001
    Par weejungle dans le forum Oracle
    Réponses: 24
    Dernier message: 30/08/2006, 11h39
  5. [10gR1] Drop user puis import fait grossir les fichiers
    Par Cereal123 dans le forum Oracle
    Réponses: 3
    Dernier message: 11/07/2006, 08h05

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