juillet
2010
Comment faire un relevé quantitatif des objets de chaque instance SQL Server, hébergée sur différents serveurs (ou sur un même serveur) de façon automatique ?
1.) Fichier ListeInfoServeurs.txt contenant les informations de connexion aux instance SQL Server
=================================================================================================================
il faut préparer le fichier ListeInfoServeurs.txt contenant les informations suivantes :
–> Le nom de l’instance
–> Le login pour se connecter au serveur de base de données
–> Le password
Exemple de fichier ListeInfoServeurs.txt
AdresseIPserveur1,sa,monpwd1
AdresseIPserveur2\NomInstance2,sa,monpwd2
2.) Le script Powershell à exécuter
====================================================
#Lire le contenu du fichier contenant la liste des serveurs
$listserveurs = get-content "ListeInfoServeurs.txt"
#Se positionner sur le nom du serveur
foreach ($ligne in $listserveurs) {
# Separate the server and instance names
$decoupageligne = $ligne.split(",")
$nominstance = $decoupageligne[0]
$login = $decoupageligne[1]
$stringpwd = $decoupageligne[2]
if($nominstance -eq ''){
break}else{
$serveur=new-object('Microsoft.SqlServer.Management.Smo.server')$nominstance
$serveur.ConnectionContext.LoginSecure=$false;
$serveur.ConnectionContext.set_login($login);
$serveur.ConnectionContext.set_Password($stringpwd);
Write-Host -foregroundcolor "green" "################################################"
Write-Host Serveur : $nominstance version : $serveur.version
Write-Host -foregroundcolor "green" "################################################"`n
try{
foreach ($database in $serveur.Databases) {
Write-Host "Base de donnée :" $Database.name
Write-Host -----------------------------------------------
$taillebase = [math]::round([int]$Database.size,1)
Write-Host "Taille Base: " $taillebase "Mo"
Write-Host "Taille Data : " $Database.DataSpaceUsage "Ko"
Write-Host "Taille Index : " $Database.IndexSpaceUsage "Ko"
Write-Host "Espace disponible :"$Database.SpaceAvailable "Ko" `n
}
}
catch{Write-Host "Impossible de se connecter au serveur $serveur" }
}
}
3.) RESULTAT
==================================================================================
################################################
Serveur : AdresseIPserveur1 version : 10.0.1600
################################################
Base de donnée : AdventureWorks
———————————————–
Taille Base: 204 Mo
Taille Data : 106552 Ko
Taille Index : 60600 Ko
Espace disponible : 17424 Ko
Base de donnée : AdventureWorksDW
———————————————–
Taille Base: 66 Mo
Taille Data : 44040 Ko
Taille Index : 928 Ko
Espace disponible : 19288 Ko
Base de donnée : AdventureWorksLT
———————————————–
Taille Base: 7 Mo
Taille Data : 3096 Ko
Taille Index : 1584 Ko
Espace disponible : 120 Ko
Base de donnée : AdventureWorksLT2008
———————————————–
Taille Base: 7 Mo
Taille Data : 3120 Ko
Taille Index : 1584 Ko
Espace disponible : 112 Ko
Base de donnée : BD1
———————————————–
Taille Base: 4 Mo
Taille Data : 704 Ko
Taille Index : 792 Ko
Espace disponible : 1456 Ko
…………………………
/********************************************************************************************************
— TAILLE DES OBJETS DE TOUTES LES INSTANCES HEBERGEES SUR DIFFERENTS SERVEURS
— Auteur : Etienne ZINZINDOHOUE
*******************************************************************************************************/
Bonjour,
Tu peux t’inspirer de ceci :
http://blog.developpez.com/zinzineti/p9087/powershell-sqlserver/monitoring-des-jobs-de-plusieurs-instanc/#more9087
Bonjour,
Pouvez vous svp indiquer une méthode pour renvoyer le résultat dans un fichier txt ou html?
D’avance merci