none
Always On Availability Group SQL Server 2012 RRS feed

  • Question

  • Bonjour,

    Je suis un stagiaire DBA, je travails sur Always On Availability Group, et je veux savoir s’il y a une méthode pour ajouter chaque base crée sur mon instance sur un groupe de disponibilité existant.

    J’ai utilisé un Trigger DLL, pour  automatisé ca mais le problème que on ne peut pas exécuter Backup DATABASE dans un Trigger DLL, car pour ajouter une base de donnée sur un groupe de disponibilité il faut qu’elle soit sauvegardée en full backup.

    Voilà le script que j’ai utilisé : Quelqu’un peux m’aider ?

    /****** Object:  DdlTrigger [Add_Availability_Group]    Script Date: 06/18/2013 16:25:59 ******/

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    ALTER TRIGGER [Add_Availability_Group]

    ON ALL SERVER

    FOR CREATE_DATABASE

    AS

        DECLARE @database sysname;

        DECLARE @cmd  varchar(Max);

        SET @database  = EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(max)') 

        PRINT 'Database ' + @database + ' Created.'

        SET @cmd = 'BACKUP DATABASE ' +@database+ ' TO  DISK = N''B:\BACKUP\ttt.back'' WITH  COPY_ONLY, FORMAT, INIT, SKIP, REWIND, NOUNLOAD, COMPRESSION,  STATS = 5'

        exec (@cmd)

          PRINT 'Database ' + @database + ' Backup.'

        ALTER AVAILABILITY GROUP [EMU-AG1]

        ADD DATABASE @database;

        PRINT 'Database ' + @database + ' ADD AVAILABILITY GROUP .'

       GO

    SET ANSI_NULLS OFF

    GO

    SET QUOTED_IDENTIFIER OFF

    GO

    ENABLE TRIGGER [Add_Availability_Group] ON ALL SERVER

    GO

    vendredi 21 juin 2013 09:34

Toutes les réponses

  • Bonjour Samir,

    Avant toute chose, bienvenue dans la communauté des DBA  :)

    Je répondrai à ta question en deux temps.

    La pertinence de ton besoin

    Si tu me le permets je commencerai par t'indiquer qu'impliquer PAR DEFAUT une base de données fraichement créée dans un Availibility Group est une mauvaise idée. Les raisons qui justifient mes propos :

    - AlwaysOn répond à un besoin d'un SLA (Service Level Agreement). Si ta base est à très faible criticité, elle n'a à être impliquée dans ce genre de solution.

    - Cela implique de forcer ta base en mode FULL. Gare donc à la gestion des TransLog.

    - Plus tu rajoutes de briques à un AG, plus par définition tu l'exposes à des conditions de Failover. Dans ce genre d'architecture (tout comme dans un Cluster MSCS) c'est la règle du "Nécessaire et suffisant" qui s'applique. Donc là encore, si sa mise en AG n'est pas nécessaire s'abstenir.

    - Enfin qui dit AG dit "serveur(s) secondaire(s)", et donc dit besoin d'espace disque supplémentaire.. Et l'espace disque ça coute !  ;)

    Intégration rapide d'une base dans un AG

    La solution en juste compromis en terme d'automatisation peut être tout simplement la création d'une procédure stockée acceptant en paramètres Input le nom de ta base ainsi que celui de ton Availability Group, Procédure que tu pourrais exécuter au besoin.

    Hope this helps..   :)

    • Proposé comme réponse Fred-M lundi 1 juillet 2013 15:45
    lundi 1 juillet 2013 10:16
  • Bonsoir Fred,

    je vous remercie pour votre réponse,

    pour le script d'automatisation avec un trigger DDL, ça fonctionne il suffit de Valider la transaction de backup(COMMIT) et jouer sur la variable @@TRANCOUNT  et ça marchera.

    pour la procédure stockée je pense pas que cela soit faisable car j'ai pas a l'avance le nom de la base.

    j'explique un peux mon besoin et les raisons pour les quelles j'ai pensé a l'automatisation de cette tache:

    Cette solution de HD sera préparée pour une plateforme SharePoint et ce programme vas créez des bases de données selon un algorithme que je maîtrise pas et on a pas la possibilité de savoir quand  il vas créer une base. donc c'est pour ça qu'on a pensé a l'automatisation de cette tache.

    -pour la base en mode Full, a ma connaissance on ne peux pas ajouter une base dans le Availability Group sans que la base soit en mode full et  un backup complet de la cette base????!!!

    -pour ajout de briques a un AG, toutes les bases qui serons créer sur cette instance sont indispensables   

      (si j'ai la possibilité d'ajouter les base système je vais pensé a les ajoutées , mais c'est un autre sujet je pense a contained database?????!!!!!!!!!!!!!)

    -pour l'espace disque, y'aura pas de problème dans ce projet.

    voila un résumé de la situation.

    je vous remercie a l'avance et je serais reconnaissant si vous pouvez me dire est ce que je suis dans la bonne voix, et s'il y a d'autre alternative dont les quelle j'ai pas pensé.

    Cordialement.

    S.S

     

     


    S.S

    lundi 1 juillet 2013 18:58
  • Monsieur

    Votre manière de faire n'est pas très correcte.

    Lors de l'email que vous m'avez adressé personnellement, vous auriez pu me prévuenir que vous faisiez un simple copier/coller de ce thread.

    Ca passe encore. Mais faire une réponse sur le forum et me répondre avec un autre copier coller, c'est moyen. Vous auriez au moins pu changer une virgule ou un point d'exclamation.

    Toujours est-il que je réitère ma mise en garde, n'allez pas au bout de votre idée, car dans les bases Sharepoint, certaines de doivent pas être en AG.


    Christophe LAPORTE - Independent Consultant & Trainer - SQL Server MVP-MCM

    lundi 1 juillet 2013 20:00
  • Bonsoir,

    je suis désolé, je savais pas que vous êtes aussi sur ce forum, c'est la première fois que j'utilise ce forum, mon intention est d'avoir plusieurs conseilles et de mieux comprendre (Je suis stagiaire).

    et comme j'été un peux bloqué, j'ai déposé ma question sur ce forum et j'ai cherché sur votre blog puisque j'ai vue votre présentation démo de Always on Availability Group.

    je suis encore désolé j'avais pas une mauvaise intention.

    Cordialement. 


    S.S

    lundi 1 juillet 2013 20:23
  • Bonjour,

    J'ai pas mal travaillé sur SQL Server 2012 AlwaysOn et SharePoint alors je vais essayer de vous donner mon point de vue. Votre idée de départ est plutôt bonne car SharePoint ne propose pas de provisionning de ses bases dans un groupe de disponibilité mais je ne pense pas qu'il faille automatiser ce processus à tout prix.

    Tout d'abord vous ne précisez pas votre topologie AlwaysOn et votre besoin : HA et / ou DR ? combien de réplicas ? quelles types de réplications ? Quelles bases de données concernées ? Les bases de données applicatives ou de contenu ? C'est important car comme le dit Christophe en fonction du cas certaines bases de données SharePoint ne pourront pas être membre d'un groupe de disponibilité

    Pour ma part nous avons plutôt opté pour un script PowerShell que nous lançons manuellement (peut importe le langage) pour :

    • provisionner les bases de données SharePoint dans le groupe de disponibilité concerné
    • Décommisionner les bases de données SharePoint qui seraient éventuellement à supprimer
    • Synchroniser les logins / utilisateurs des bases de données SharePoint si nécessaire

    PS : Dans ton script je ne vois pas de processus de restauration de la base concernée. Il manque également la partie "joindre la base de données" depuis le secondaire de tête.

    ++


    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1




    mardi 2 juillet 2013 09:00
    Modérateur