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 :

Vider une table dans plusieurs bases + automatiser réduction taille bdd


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut Vider une table dans plusieurs bases + automatiser réduction taille bdd
    Bonjour,

    J'aimerais vider les tables MJOINT MNOTE et M8 sur toutes les bases SQL qui existent.
    L'idée est d'éviter de lancer les lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE M8
    DELETE MJOINT
    DELETE MNOTE
    unitairement pour chaque base, mais d'avoir une possibilité que ce soit fait en une fois pour toutes les bases SQL qui contiennent ces tables.
    Est-ce possible?

    Dans la foulée, suite à cette action, je lance Tache > Réduire > Base de données pour libérer l'espace disque de ces données supprimées, mais même question, est-ce qu'on peut l'automatiser pour toutes les bases d'un seul coup? Via plan de maintenance pê?

    Merci à vous,

    Corentin

  2. #2
    Membre chevronné Avatar de AaâÂäÄàAaâÂäÄàAaâÂäÄ
    Homme Profil pro
    db@
    Inscrit en
    Septembre 2021
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : db@

    Informations forums :
    Inscription : Septembre 2021
    Messages : 553
    Par défaut
    Tu peux t'inspirer de ces deux bouts de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE sp_msforeachdb 'use [?]; IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = ''M8'' AND TABLE_SCHEMA = ''dbo'') TRUNCATE TABLE dbo.M8'
    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
    DECLARE @SQL_ex NVARCHAR(500)
    DECLARE CURSOR_Modif_Param CURSOR FOR 
    SELECT SQL='USE ['+name+'] ; DBCC SHRINKDATABASE(N''' + name + ''' )' from sys.databases
     
    OPEN CURSOR_Modif_Param 
    FETCH NEXT FROM CURSOR_Modif_Param INTO @SQL_ex
    WHILE @@FETCH_STATUS = 0 
    BEGIN 
    	PRINT @SQL_ex
    	EXECUTE sp_executesql @SQL_ex
    	FETCH NEXT FROM CURSOR_Modif_Param INTO @SQL_ex
    END 
    CLOSE CURSOR_Modif_Param 
    DEALLOCATE CURSOR_Modif_Param
    GO

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut
    Merci bien, je vais regarder cela !

  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
    22 001
    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 : 22 001
    Billets dans le blog
    6
    Par défaut
    Ou encore avec du SQL dynamique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @SQL NVARCHAR(max) = N'';
    SELECT @SQL = @SQL + N'USE [' + name + '];DELETE M8;DELETE MJOINT;DELETE MNOTE;'
    FROM   sys.databases WHERE  database_id > 4;
    EXEC (@SQL);
    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/ * * * * *

Discussions similaires

  1. [AC-2003] Requête mise à jour d'un champ d'une Table dans plusieurs bases ACCESS
    Par alainfbsi dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/05/2013, 20h35
  2. [Performances] Séparer les tables dans plusieurs bases ?
    Par Seb33300 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 29/09/2007, 19h55
  3. Réponses: 3
    Dernier message: 29/06/2007, 17h56
  4. Réponses: 17
    Dernier message: 12/04/2007, 13h54
  5. mettre une table dans plusieurs tables
    Par mat75019 dans le forum Access
    Réponses: 5
    Dernier message: 16/06/2006, 11h46

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