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

Scripts/Batch Discussion :

BACKUP DATABASE SQL SERVER


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Par défaut BACKUP DATABASE SQL SERVER
    Bonjour,
    je viens de créer un script powershell mais j' aimerai l'améliorer notamment en récupérant le log de mon backup que je souhaiterais recevoir par mail
    Pour l instant il fonctionne bien mais j' aimerais récupérer ce type de log
    C'est le même typede log qu'on génére avec SSMS

    3896 pages traitées pour la base de données 'XXXXX', fichier 'XXXXX' dans le fichier 3.
    1 pages traitées pour la base de données 'XXXXX, fichier 'XXXXX' dans le fichier 3.
    BACKUP DATABASE a traité avec succès 3897 pages en 0.651*secondes (46.766*Mo/s).

    J' avais avant un batch qui me donnait le résultat
    Voici l' ancien script:
    ECHO Backing up database: %%I
    SqlCmd -E -S %SRV% -Q "BACKUP DATABASE [%%I] TO Disk='%BCKFOLDER%\%NowDate%_%%I.bak'" -o "%LOGFOLDER%\%NowDate%_%%I.log"

    Voici la partie du programme

    try {

    try {
    $resultsDataTable = New-Object System.Data.DataTable
    $Command = New-Object System.Data.SQLClient.SQLCommand
    $Command.Connection = $sqlConnection
    $Command.CommandText = "SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN ('master','model','msdb','tempdb')"
    $Reader = $Command.ExecuteReader()
    $resultsDataTable.Load($Reader)
    foreach ($Row in $resultsDataTable.Rows)
    {
    $dbname_exp=$($Row[0])
    ## déclaration des variables pour le backup
    $namexport=$Bckfolder+$datexport+'-'+$dbname_exp+".bak"
    $namelog=$Logfolder+'-'+$dbname_exp+".log"
    $SqlQuery_export="BACKUP DATABASE ["+$dbname_exp+"] TO Disk='"+$namexport+"'"
    Write-Output $SqlQuery_export | Out-File -FilePath e:\export_sqlcms.txt -Append
    $Command.CommandText=$SqlQuery_export
    $Reader = $Command.ExecuteReader()
    $resultsDataTable.Load($Reader)
    }

    $Reader.Close()
    $Reader.Dispose()
    $resultsDataTable.Dispose()
    }

    Merci à tous pour votre aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Bonjour,

    Je vous suggère d'utiliser Start-Transcript, et ainsi vous récupérez dans un fichier tout ce qui est craché dans la console. C'est souvent ce que j'utilise pour garder un log des tâches automatisées. C'est plus simple et plus verbose aussi.
    Veillez à appeler Stop-Transcript, puis envoyez-vous le fichier par mail.
    Ce que vous avez fait semble tenir la route néanmoins. Le résultat obtenu n'est-il pas satisfaisant ?

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Le log que tu nous montre est généré par la commande SqlCmd.
    Tu peux aussi l'appeler en powershell si besoin.

    Si tu préfère attaquer directement la base comme tu le fait, tu devras générer ton propre log avec sa mise en forme...

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 67
    Par défaut
    Ajoute ce code au tiens
    il te permettra de récupérer le log de ton backup et l'envoyer par mail
    Biensure, remplace les informations par les tienne

    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
    # Exécution de la commande SQL pour effectuer le backup et redirection de la sortie vers un fichier de log
    $SqlQuery_export = "BACKUP DATABASE [$dbname_exp] TO Disk='$namexport' WITH INIT, STATS=10"
    $Command.CommandText = $SqlQuery_export
    $Logfile = "$Logfolder\$($dbname_exp).log"
    $Command.CommandTimeout = 0
    $Command.ExecuteNonQuery() 2>&1 | Out-File -FilePath $Logfile
    
    # Envoi du fichier de log par mail
    $smtpServer = "smtp.example.com"
    $smtpFrom = "backup@example.com"
    $smtpTo = "admin@example.com"
    $smtpSubject = "Log du backup de la base de données $dbname_exp"
    $smtpBody = "Veuillez trouver ci-joint le log du backup de la base de données $dbname_exp"
    $smtpAttachment = $Logfile
    $smtp = New-Object Net.Mail.SmtpClient($smtpServer)
    $msg = New-Object Net.Mail.MailMessage($smtpFrom,$smtpTo,$smtpSubject,$smtpBody)
    $attachment = New-Object Net.Mail.Attachment($smtpAttachment)
    $msg.Attachments.Add($attachment)
    $smtp.Send($msg)
    
    # Suppression du fichier de log
    Remove-Item $Logfile

Discussions similaires

  1. Backup base SQL server 2005
    Par Axiome dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 28/01/2013, 12h32
  2. SP2010 - Problème de multiple Database SQL server 2008
    Par zencorp dans le forum Installation
    Réponses: 0
    Dernier message: 19/01/2011, 16h46
  3. drop database sql server 2005 ien c#
    Par ing_b dans le forum C#
    Réponses: 1
    Dernier message: 10/04/2009, 09h16
  4. liaison backup avec sql server 2005
    Par [:.dragonne.:] dans le forum Administration
    Réponses: 1
    Dernier message: 16/04/2008, 12h01
  5. Backup BD SQL Server
    Par Ethmane dans le forum Administration
    Réponses: 3
    Dernier message: 07/06/2002, 00h42

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