Suppression les lignes dupliquées avec SSIS

Bonjour

Vous avez  plusieurs enregistrements dupliquées dans votre base de données SQL Server. et vous chercher un moyen rapide et facile de les supprimer

Il existe plusieurs façons de supprimer les enregistrements en double dans SQL Server. Dans cette astuce, je vais utiliser la transformation de tri SSIS pour supprimer les enregistrements et vous montrer à quel point cela peut être facile                                          pour commencer Essayer de Configurez le gestionnaire de connexions pour qu’il pointe vers votre ensemble de données. Dans cet exemple, j’utilise localhost et ma base de donnée AdventureWorksLT2014

Sans titre

Cliquez sur OK pour fermer la tâche Source OLEDB. Faites glisser la tâche Trier la transformation sur l’écran de conception. Connectez la tâche Source OLEDB à la tâche Trier

Sans titre

Faites de nouveau un clic droit sur la tâche Trier et vous remarquerez en bas, « Supprimer les lignes avec des valeurs en double » Cliquez sur l’option Supprimer les lignes et choisissez OK:

Sans titre

Cliquez avec le bouton droit sur la contrainte de précédence entre la colonne Trier et Dérivée et cliquez sur Activer la visionneuse de date. Cela nous permettra d’afficher les données lors de leur passage dans la contrainte

Sans titre

Cliquez à nouveau sur le bouton de lecture dans la barre d’outils pour afficher les résultats. Sur l’écran de conception, vous pouvez voir que j’ai passé 128 lignes à la colonne de tri, mais la colonne de tri n’a transmis que 94 lignes à la tâche suivante. Cela signifie que la transformation a supprimé 34 doublons en fonction de l’état de la colonne

Sans titre

Vous pouvez maintenant voir que j’ai des colonnes « Distinct » Name et que j’ai pas eu de doublons

Sans titre

Bonne configuration


 

backup multi databases sur multi serveurs a travers SSIS

bonjour

Dans cet article de blog, je souhaite montrer comment utiliser l’énumérateur Foreach ADO de SSIS pour parcourir une liste de noms de serveurs SQL et collecter des données de base afin de faire finalement une opération du sauvegarde Multi Server Multi base de donnée

le flux de traitement principal de ce paquet commence par déterminer les listes des serveurs ou des instances SQL j’utilise pour ce ETL cette petit requête

select 'localhost\sqlprod' as servername
union all
select 'localhost\sqlprod02' as servername
union all
select 'localhost\sqlprod03' as servername
union all
select 'localhost\sqlprod04' as servername

Dans ton SQL Task, il faut :
– mettre la propriété ResultSet sur Jeu de résultats complet (car ta requête  retourne Plusieurs lignes)
– dans le menu à droite, tu as une catégorie Result Set, tu cliques sur Add. Dans ResultName tu mets 0 (premier et seul élément retourné par ta requête) et dans variable name tu choisis la variable à renseigner par la valeur retournée par la requête

1-Parcours listes des serveurs

Sans titre

L’étape suivante consiste à créer notre boucle ADO Foreach. Comme vous pouvez le voir dans l’image ci-dessous, vous devez spécifier la variable dans laquelle nous avons écrit le jeu de résultats de notre Tâche d’exécution de requêtes SQL

Sans titre

En plus de cela, nous devons spécifier une deuxième variable ( de type String! ) Dans laquelle la boucle écrira le contenu de chaque ligne du jeu de résultats. Le contenu de la variable passera de l’itération à l’itération

Sans titre

2-Parcours Listes des bases

Sans titre

Les listes des bases  à examiner est lue dans notre Requéte SQL Server à l’aide d’une tâche d’exécution de requétes SQL

select name from sys.databases where name not in
('master','tempdb','model','msdb')

Nous devons écrire le jeu de résultats d’une requête SQL dans une variable  de type system.object . La boucle parcourra ensuite toutes les lignes de toute votre requétes  de cette variable. Il est important de spécifier le jeu de résultats complet ; Si vous ne définissez pas cette option, vous ne pourrez pas stocker le jeu de résultats dans une variable.

Sans titre

Une fois que vous avez entré l’instruction SQL et que vous avez défini l’option ResultSet , vous devez basculer vers le volet jeu de résultat et spécifier le nom de la variable dans laquelle vous souhaitez stocker le jeu de résultats. La variable doit être de type object  :

Sans titre

Sans titre

.

 

Sans titre

Deuxièmement, nous utilisons les propriétés de la connexion pour spécifier une expression à travers laquelle la chaîne de connexion de la connexion sera changée en chaîne de connexion dans la variable qui est modifiée par la boucle Foreach ADO

"Data Source="+ @[User::serveur]+" ;Initial Catalog=master;
Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;
""Data Source="+ @[User::serveur]+"
;Initial Catalog=master;Provider=SQLNCLI11.1;
Integrated Security=SSPI;Auto Translate=False;"

Sans titre

Enfin, nous définissons l’instruction SQL backup du façon paramétrer de cette maniérer

"BACKUP DATABASE" +" "+ @[User::name_DATABASE]  +" "+
"TO DISK = '"+ @[User::Path_Folder]+"\\"+@[User::name_dATABASE] +  ".bak'"

Sans titre

Sans titre

À la fin, le flux de données de notre paquet devrait ressembler à ceci:
Sans titre

j’espère que cela pourra vous aider Bonne suivi && configuration du  Package

PowerShell Backup/Restore Multi Databases

bonjour a tous

vous avez  deux serveurs, Prod et Test, et tous les deux exécutent  SQL Server
Est-il possible d’avoir une solution qui me permet de  copier toutes les bases  de données d’un serveur à un autre? alors la bonne méthode c’est du PowerShell

vous voulez faire une copie de plusieurs Bases de données toutes les semaines et synchroniser vos instances avec un seul script alors c’est du Powershell

Vous pouvez modifier le script si nécessaire pour correspondre à votre environnement et à vos besoins

ci joint mon instance qui contient plusieurs base de données

Sans titre
Ci joint Le script du backup qui sauvegarde toutes les bases de données à l’exception de la base de données système et écrit les fichiers de sauvegarde sur le disque local

 


$SQLInstance = ".\sqlprod"
$BackupFolder = "C:\backup\"
$a = get-date -UFormat %V
[string]$num_semaine= 52 – $a #numeror de semaine
[string]$year=Get-Date -UFormat %Y #récupéree anné
$format_date=$num_semaine +$year
$format_date="_"+$format_date
$tStamp = Get-Date -format yyyyMMddHHmm 

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null

$srv = New-Object ("Microsoft.SqlServer.Management.Smo.Server") $SQLInstance
$dbs = New-Object Microsoft.SqlServer.Management.Smo.Database
$dbs = $srv.Databases 

foreach ($Database in $dbs | where { $_.IsSystemObject -eq $False })
{
$Database.name
$bk = New-Object ("Microsoft.SqlServer.Management.Smo.Backup")
$bk.Action = [Microsoft.SqlServer.Management.Smo.BackupActionType]::Database
$bk.BackupSetName = $Database.Name + "_backup_" + $tStamp
$bk.Database = $Database.Name
$bk.CompressionOption = 1
$bk.MediaDescription = "Disk"
$bk.Devices.AddDevice($BackupFolder + "" + $Database.Name +$format_date + ".bak", "File") 

TRY
{$bk.SqlBackup($srv)}
CATCH
{$Database.Name + " backup failed."
$_.Exception.Message}
}

Sans titre
Sans titre

Maintenant, si vous avez une base de données qui existe dans votre instance , vous pouvez les supprimer comme suit:

$SQLInstance = ".\sqlprod"
$srv = New-Object ("Microsoft.SqlServer.Management.Smo.Server") $SQLInstance
$dbs = New-Object Microsoft.SqlServer.Management.Smo.Database
$dbs = $srv.Databases
foreach ($Database in $dbs | where { $_.IsSystemObject -eq $False })
{
$Database.Drop()
}

Ce Script restaurera toutes les bases de données (* .bak) qui se trouvent dans le dossier défini

$server=".\sqlprod"
$files = Get-ChildItem -Path "c:\Backup\" -filter *.bak

foreach ($f in $files)
{
$fs = $f.Name
$s = $fs.split(".")
[string]$s[0]
Restore-SqlDatabase -ServerInstance $server -Database $s[0] -BackupFile $f -ReplaceDatabase
}

Vous obtiendrez les résultats comme ci-dessous
Sans titre

Voyons  maintenant comment Exécuter un script PowerShell via une tâche planifiée

Etape1 : Ouvrir le Planificateur de tâches
Panneau de configurationOutils d’administrationsPlanificateur de tâches

Etape 2:Clique droit – Créer une nouvelle tâche

Sans titre

Etape 3:Configurer les options de base suivant vos besoins puis spécifier le chemin du votre script 

Indiquer dans Programme/script :
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Indiquer dans Ajouter des arguments :
Le chemin de votre script PowerShell (ici C:\backup\SYnchron_instance.ps1)            Valider l’action en cliquant sur OK

Sans titre

finalement Valider votre nouvelle tâche planifiée. Les informations d’identification utilisateur peuvent vous être demandées

 

Sans titre

Bonne configuration && synchronisation

 

Comment utiliser WinSCP et SSIS pour télécharger des fichiers depuis SFTP

bonjour

SSIS fournit des fonctionnalités pour se connecter à un serveur FTP mais pas à un serveur SFTP

Heureusement SSIS vous permet d’exécuter un processus (dans notre cas WinSCP), que nous allons utiliser pour télécharger les fichiers

J’ai créé un nouveau package dans SSIS et j’ai déplacé une tâche Execute Process Task sur la palette comme indiqué ci-dessous

Tache_FTP

Puis un  double-clique sur la tâche d’exécution de processus  ,éditer les propriétés de la tâche. Sous l’onglet Général, de l’éditeur de tâche d’exécution de processus, j’ai renommé la tâche pour qu’elle soit plus descriptive

Cliquez sur « Traiter » sur le côté gauche de l’éditeur de tâches Execute Process pour afficher les paramètres du processus.

  • Définissez la propriété d’exécutable sur le chemin d’accès complet et le nom du fichier winscp.exe: C:\Program Files (x86)\WinSCP\WinSCP.exe
  • Définissez la propriété Arguments pour deux arguments. Le premier argument acceptera le fichier de configuration « WinSCP.ini » suivi du chemin complet et du nom de fichier Le deuxième argument  représente le chemin complet du fichier de script          
  • Enfin, le Working Directory doit être défini sur le dossier dans lequel WinSCP peut être trouvé, le mien est défini sur « C: \ Program Files (x86) \ WinSCP ».

                                                                                      

Tacge_FTP2

Pour récupérer le fichier de configuration winscp.ini cliquer sur le bouton « Exporter / sauvegarder la configuration »

Tache_FTP3

Ensuite, j’ai testé le package SSIS dans le débogueur Visual Studio

Sans titre

Après l’exécution du package, vérifiez bien que votre fichier a été transféré avec succès. Si vous rencontrez des problèmes, vous pouvez résoudre le problème avec le client winscp

Le fichier de script que j’ai utilisé est posté ci-dessous                                                                 

option batch on
option confirm off
open sftp: // :  @
cd /informatique/FTP
put C:\backup\Test_Ftp.txt
close
exit

bonne configuration

Tracer Drop Table dans Postgres

Comment Tracer l’instruction DROP TABLE dans le fichier journal de PostgreSQL?

Ci-dessus est une question connu  par les DBA PostgreSQL. Nous devrions enregistrer tout le type d’instructions  DDL dans le fichier log du postgres                                                   

Pour  Tracer  l’instruction DDL dans les fichiers journaux, nous devons modifier les paramètres suivants dans le fichier postgresql.conf

log_statement=’ddl’
log_line_prefix = ‘%t %c %u ‘ (time, sessionid, user)
logging_collector = ON

Sans titre

Par exemple:
J’ai supprimer la table « visit  » et j’ai modifier la table « card » 

Sans titre

Maintenant, je peux voir ci-dessous la ligne dans mon fichier journal

Sans titre

Bonne supervision

Création de sauvegarde, restauration de cube SSAS

bonjour

Dans ce chapitre, nous allons discuter de la façon de compléter les sauvegardes et les restaurations de base de données SQL Server Analysis Services

il s’agit d’une tâche logique dans la liste des tâches d’un administrateur qui  serait les sauvegardes et restaurations de bases de données

Dans SSAS La création d’une sauvegarde est relativement simple tout comme nous sauvegardons les bases de données relationnelles dans SQL Server

Depuis SSMS. Cliquez avec le bouton droit sur la base de données SSAS dans la fenêtre de l’explorateur d’objets de SSMS, puis sélectionnez Sauvegarder. Cela devrait faire apparaître une fenêtre comme indiqué dans la capture d’écran ci-dessous

Sans titre

Indiquez le nom du fichier de sauvegarde et sélectionnez les options de compression et de chiffrement

cube_Tabulaire

Appuyez sur OK et le fichier de sauvegarde doit être créé avec une extension de fichier * .abf dans le répertoire de sauvegarde sélectionné

Il existe trois types d’option , tout en créant la sauvegarde du cube:

  • Autoriser l’ écrasement des fichiers (si vous cochez cette option ,il sera remplacer le cas échéant cube de secours si elles existent sur le même emplacement).
  • Appliquer la compression (si vous cochez cette option , il sera compresser le cube fichier de sauvegarde)
  • Crypter fichier de sauvegarde (si vous cochez cette option , il vous protégera de sauvegarde avec protection par mot de passe).Si vous avez coché l’ option Crypter sauvegarde de fichier il activerez. Vous devez fournir un mot de passe. Chaque fois que vous restaurez cette sauvegarde , vous devez fournir ce mot de passe que le temps

 Si vous voulez générer le script du fichier de sauvegarde puis cliquez sur le script que vous obtiendrez le script suivant

http://schemas.microsoft.com/analysisservices/2003/engine »>
Cube_Tabulaire2018
Cube_Tabulaire2018.abf

Pour s’avoir le répertoire du sauvegarde configuré sur votre instance SSAS Faite un clique droit sur votre instance Puis vers Propriété Une Fenêtre s’apparaît  avec la configuration du votre instance

Sans titre

Restaurer le fichier sauvgarde de cube  sur Analyse service 

Faites un clic droit sur la base de données Puis  Cliquez sur Restaurer

Sans titre

Cliquez sur le bouton du navigateur et sélectionnez le fichier dusauvegade du cube Puis Cliquez sur OK.

Sans titre

Cliquez sur OK  Maintenant votre backup a été bien restauré

Actualiser la base de données, vous obtiendrez la nouvelle base de données                       Si vous voulez générer le script de restauration base de données cliquez sur script.

{
  "backup": {
    "database": "Cube_Tabulaire2018",
    "file": "Cube_Tabulaire2018.abf",
    "allowOverwrite": false,
    "applyCompression": false
  }
}

Espérons que cet article vous aide. Si vous avez des questions n’hésitez pas à me déranger 🙂