Question Activer/Desactiver Sql Server Jobs
- Rambler
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 1
- Remerciements reçus 0
il y a 5 mois 1 semaine - il y a 5 mois 1 semaine #34370
par Rambler
Activer/Desactiver Sql Server Jobs a été créé par Rambler
Bonjour tout le monde,
J'ai ecris ce script qui a pour role d'activer, desactiver et lancer des jobs Sql Server
lorsque je voulais l'executer je tombe sur cette erreur
Qui indique que la proprieté 'IsEnabled' est introuvable dans l'objet
par contre dans ce code
j'ai pu la recuperer et l'afficher dans le console
The job name IndexOptimize - USER_DATABASES is active
mais lorsque je voulais la mettre en $true ou $false ca marche pas
de l'aide SVP
J'ai ecris ce script qui a pour role d'activer, desactiver et lancer des jobs Sql Server
Param (
# Nom du job
[Parameter(Position = 0)]
[string[]]
$JobName,
# Action a faire
[Parameter(Position = 1)]
[ValidateSet('activate', 'disable', 'start')]
[string]
$Action
)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
$MachineName = $env:COMPUTERNAME
$instanceName = (Get-Service -ComputerName $MachineName -Exclude "MSSQLFDLauncher*" `
| Where-Object { ($_.Status -eq "Running") -and (($_.Name -eq 'MSSQLSERVER') -or ($_.Name -like '*MSSQL$*')) } `
| Select-Object @{Name = "ComputerName" ; Expression = { $_.MachineName.ToUpper() } },
@{Name = "InstanceName" ; Expression = { $_.ServiceName -replace "MSSQL\$" } },
@{Name = "ServerName" ; Expression = { If ($_.ServiceName -eq 'MSSQLSERVER') { $_.MachineName.ToUpper() }
Else { $($_.MachineName.ToUpper() + '\' + $_.ServiceName -replace "MSSQL\$") } }
}).ServerName
function activateJob($JobName, $instanceName) {
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
$server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server($instanceName)
Write-Host -ForegroundColor Green "Paramaters : Instance name is :$instanceName, Job name is: $JobName"
$sqljob = $server.JobServer.Jobs[$JobName]
if ($sqljob.IsEnabled) {
$actualStatus = "active"
}
else {
$actualStatus = "disable"
}
Write-Host -ForegroundColor Green "The job name $JobName is $actualStatus"
if ($sqljob) {
$sqljob.IsEnabled = $true
$sqljob.Alter()
}
}
function disableJob($JobName, $instanceName) {
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
$server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server($instanceName)
Write-Host -ForegroundColor Green "Paramaters : Instance name is :$instanceName, Job name is: $JobName"
$sqljob = $server.JobServer.Jobs[$JobName]
if ($sqljob.IsEnabled) {
$actualStatus = "active"
}
else {
$actualStatus = "disable"
}
Write-Host -ForegroundColor Green "The job name $JobName is $actualStatus"
if ($sqljob) {
$sqljob | select *
$sqljob.IsEnabled = $False
$sqljob.Alter()
}
}
function startJob($JobName, $instanceName) {
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
$server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server($instanceName)
Write-Host -ForegroundColor Green "Paramaters : Instance name is :$instanceName, Job name is: $JobName"
$sqljob = $server.JobServer.Jobs[$JobName]
if ($sqljob) {
$sqljob.start()
}
}
if ($Action -eq 'activate') {
TRY {
Write-Host "Trying to activate the SQL Server job: $JobName"
activateJob -JobName $JobName -instanceName $instanceName
Write-Host -ForegroundColor Green "The job $job was activated"
}
catch {
Throw Write-Host -ForegroundColor Red "Activating the job $JobName was failed" -Exception $_.exception -PassThru
break
}
}
elseif ($Action -eq 'disable') {
TRY {
Write-Host "Trying to disable the SQL Server job: $JobName"
disableJob -JobName $JobName -instanceName $instanceName
Write-Host -ForegroundColor Green "The job $job was disabled"
}
catch {
Throw Write-Host -ForegroundColor Red "Disabling the job $JobName was failed" -Exception $_.exception -PassThru
break
}
}
elseif ($Action -eq 'start') {
TRY {
Write-Host "Trying to start the SQL Server job: $JobName"
startJob -JobName $JobName -instanceName $instanceName
Write-Host -ForegroundColor Green "The job $job was started"
}
catch {
Throw Write-Host -ForegroundColor Red "Starting the job $job was failed" -Exception $_.exception -PassThru
break
}
}
else {
Write-Host -ForegroundColor Red "Invalid action parameter. Valid values are 'activate', 'disable', 'start'"
}
lorsque je voulais l'executer je tombe sur cette erreur
PS D:\Scripts> .\manageSqlServerJob.ps1 'IndexOptimize - USER_DATABASES' disable Trying to disable the SQL Server job: IndexOptimize - USER_DATABASES Paramaters : Instance name is :CPEMOSERV, Job name is: IndexOptimize - USER_DATABASES The job name IndexOptimize - USER_DATABASES is active Disabling the job IndexOptimize - USER_DATABASES was failed -Exception System.Management.Automation.RuntimeException: La propriété « IsEn abled » est introuvable dans cet objet. Vérifiez qu’elle existe et qu’elle peut être définie. à System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception) à System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame) à System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) à System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) -PassThru ScriptHalted Au caractère D:\Scripts\manageSqlServerJob.ps1:93 : 9 + Throw Write-Host -ForegroundColor Red "Disabling the job $Job ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: ( , RuntimeException + FullyQualifiedErrorId : ScriptHalted
Qui indique que la proprieté 'IsEnabled' est introuvable dans l'objet
par contre dans ce code
if($sqljob.IsEnabled){ $actualStatus = "active" } else { $actualStatus = "disable" }
The job name IndexOptimize - USER_DATABASES is active
mais lorsque je voulais la mettre en $true ou $false ca marche pas
de l'aide SVP
Dernière édition: il y a 5 mois 1 semaine par Rambler.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 5 mois 1 semaine #34380
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Activer/Desactiver Sql Server Jobs
Bonjour Rambler,
As-tu essayé de mettre un point d'arrêt dans ta fonction et de regarder si la propriété est bien présente ?
Par ailleurs en lisant la doc : learn.microsoft.com/en-us/dotnet/api/mic...led?view=sql-smo-160 j'ai vu qu'il existait les méthodes Start et Stop. Peut-être que tu devrais les essayer à la place d'essayer de modifier la propriété isEnabled ?
Arnaud
PS : Merci de te présenter dans le forum adhoc.
Je constate un espace dans le nom de la propriété mais ton script semble correct, donc je pense que l'espace ici provient du copier/coller du message d'erreur...La propriété « IsEn abled » est introuvable dans cet objet.
As-tu essayé de mettre un point d'arrêt dans ta fonction et de regarder si la propriété est bien présente ?
Par ailleurs en lisant la doc : learn.microsoft.com/en-us/dotnet/api/mic...led?view=sql-smo-160 j'ai vu qu'il existait les méthodes Start et Stop. Peut-être que tu devrais les essayer à la place d'essayer de modifier la propriété isEnabled ?
Arnaud
PS : Merci de te présenter dans le forum adhoc.
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.100 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- Activer/Desactiver Sql Server Jobs