Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lot DTS - Modifier l'heure de lancement d'un lot DTS via une page

3 réponses
Avatar
Grégory
Bonjour,

Je cherche à modifier l'heure de lancement d'un lot DTS dans SQL Serveur
2000 via une page ASP.

Est-ce possible ?

Voici le code pour lancer un lot DTS si cela peut vous aider et merci
d'avance :

<%
actionLibelle = "Le lot DTS a été lancé."
'LANCEMENT DU LOT DTS
Const DTSSQLStgFlag_Default = 0
Const DTSStepExecResult_Failure = 1

Dim oPkg, oStep, sMessage, bStatus

Set oPkg = Server.CreateObject("DTS.Package")
oPkg.LoadFromSQLServer
"SERVER_NAME","sa","password",DTSSQLStgFlag_Default,"","","","LOT1"
oPkg.Execute()

Response.Write(actionLibelle)
Response.Write("<br>")

bStatus = True

For Each oStep In oPkg.Steps
sMessage = sMessage & "Étape [" & oStep.Name & "] "
If oStep.ExecutionResult = DTSStepExecResult_Failure Then
sMessage = sMessage & " échouée<br>"
bStatus = False
Else
sMessage = sMessage & " réussie <br>"
End If
sMessage = sMessage & "Tâche """ & oPkg.Tasks(oStep.TaskName).Description &
"""<br>"
Next

If bStatus Then
sMessage = sMessage & "Lot DTS [" & oPkg.Name & "] réussi<br>"
Else
sMessage = sMessage & "Lot DTS [" & oPkg.Name & "] échoué<br>"
End If

Response.Write sMessage
Response.Write "Terminé<br>"
actionLibelle=""
%>


Grégory

3 réponses

Avatar
Lionel Billon (MVP)
Bonjour Gregory,

A priori, d'après votre code, vous executez directement le package DTS.
Pourquoi ne pas créer un job planifié par SQL Agent qui executerait votre
package
DTS. Vous pourrez alors facilement maitriser la date et l'heure d'execution
du package. Bien entendu ce job pourra être créé directement depuis votre
page ASP.

Regardez du côté des procédures stockées SQL Server sp_add_job, sp_add_step
et sp_add_job_schedule.

Cordialement,

Lionel BILLON (MVP)
WINSIGHT


"Grégory" a écrit :

Bonjour,

Je cherche à modifier l'heure de lancement d'un lot DTS dans SQL Serveur
2000 via une page ASP.

Est-ce possible ?

Voici le code pour lancer un lot DTS si cela peut vous aider et merci
d'avance :

<%
actionLibelle = "Le lot DTS a été lancé."
'LANCEMENT DU LOT DTS
Const DTSSQLStgFlag_Default = 0
Const DTSStepExecResult_Failure = 1

Dim oPkg, oStep, sMessage, bStatus

Set oPkg = Server.CreateObject("DTS.Package")
oPkg.LoadFromSQLServer
"SERVER_NAME","sa","password",DTSSQLStgFlag_Default,"","","","LOT1"
oPkg.Execute()

Response.Write(actionLibelle)
Response.Write("<br>")

bStatus = True

For Each oStep In oPkg.Steps
sMessage = sMessage & "Étape [" & oStep.Name & "] "
If oStep.ExecutionResult = DTSStepExecResult_Failure Then
sMessage = sMessage & " échouée<br>"
bStatus = False
Else
sMessage = sMessage & " réussie <br>"
End If
sMessage = sMessage & "Tâche """ & oPkg.Tasks(oStep.TaskName).Description &
"""<br>"
Next

If bStatus Then
sMessage = sMessage & "Lot DTS [" & oPkg.Name & "] réussi<br>"
Else
sMessage = sMessage & "Lot DTS [" & oPkg.Name & "] échoué<br>"
End If

Response.Write sMessage
Response.Write "Terminé<br>"
actionLibelle=""
%>


Grégory


Avatar
Grégory
Merci Lionel,

Grâce à tes indications, j'ai trouvé la procédure stockée
"sp_update_jobschedule"
qui permet de mettre à jour le lancement d'un lot DTS. Il suffit du
connaître son identifiant (job_id) et le tour est joué.

J'ai crée une procédure stockée qui met à jour le lot DTS voulu et qui ne
prend en paramètre que l'heure de la mise à jour.

Voici ma solution :

--DEBUT
CREATE PROCEDURE dbo.sp_UP_MAJ_Start_DTS
@active_start_time int
AS

declare @name sysname
SELECT @name = (SELECT name FROM msdb.dbo.sysjobschedules
WHERE job_id like '8B591DC3-6C31-4238-B3F4-8EAD18DA8CB1')

EXEC msdb.dbo.sp_update_jobschedule
'8B591DC3-6C31-4238-B3F4-8EAD18DA8CB1',
NULL,
@name,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
@active_start_time,
NULL
GO
--FIN

Je n'avais pas assez poussé les recherches au niveau des procédures de la
base msdb...

Grégory DELMOTTE


"Lionel Billon (MVP)" a écrit :

Bonjour Gregory,

A priori, d'après votre code, vous executez directement le package DTS.
Pourquoi ne pas créer un job planifié par SQL Agent qui executerait votre
package
DTS. Vous pourrez alors facilement maitriser la date et l'heure d'execution
du package. Bien entendu ce job pourra être créé directement depuis votre
page ASP.

Regardez du côté des procédures stockées SQL Server sp_add_job, sp_add_step
et sp_add_job_schedule.

Cordialement,

Lionel BILLON (MVP)
WINSIGHT


"Grégory" a écrit :

> Bonjour,
>
> Je cherche à modifier l'heure de lancement d'un lot DTS dans SQL Serveur
> 2000 via une page ASP.
>
> Est-ce possible ?
>
> Voici le code pour lancer un lot DTS si cela peut vous aider et merci
> d'avance :
>
> <%
> actionLibelle = "Le lot DTS a été lancé."
> 'LANCEMENT DU LOT DTS
> Const DTSSQLStgFlag_Default = 0
> Const DTSStepExecResult_Failure = 1
>
> Dim oPkg, oStep, sMessage, bStatus
>
> Set oPkg = Server.CreateObject("DTS.Package")
> oPkg.LoadFromSQLServer
> "SERVER_NAME","sa","password",DTSSQLStgFlag_Default,"","","","LOT1"
> oPkg.Execute()
>
> Response.Write(actionLibelle)
> Response.Write("<br>")
>
> bStatus = True
>
> For Each oStep In oPkg.Steps
> sMessage = sMessage & "Étape [" & oStep.Name & "] "
> If oStep.ExecutionResult = DTSStepExecResult_Failure Then
> sMessage = sMessage & " échouée<br>"
> bStatus = False
> Else
> sMessage = sMessage & " réussie <br>"
> End If
> sMessage = sMessage & "Tâche """ & oPkg.Tasks(oStep.TaskName).Description &
> """<br>"
> Next
>
> If bStatus Then
> sMessage = sMessage & "Lot DTS [" & oPkg.Name & "] réussi<br>"
> Else
> sMessage = sMessage & "Lot DTS [" & oPkg.Name & "] échoué<br>"
> End If
>
> Response.Write sMessage
> Response.Write "Terminé<br>"
> actionLibelle=""
> %>
>
>
> Grégory


Avatar
Grégory
Bonjour,

La procédure stockée msdb.dbo.sp_update_jobschedule est détaillée sur le
site suivant :
http://doc.ddart.net/mssql/sql70/sp_ua-uz_6.htm

J'ai modifié la porcédure pour la transformer comme ci-dessous :

--DEBUT
CREATE PROCEDURE dbo.sp_UP_MAJ_Start_DTS
@active_start_time_p int
AS

declare @name_p sysname
SELECT @name_p = (SELECT name FROM msdb.dbo.sysjobschedules
WHERE job_id like '8B591DC3-6C31-4238-B3F4-8EAD18DA8CB1')

EXEC msdb.dbo.sp_update_jobschedule
@job_id = '8B591DC3-6C31-4238-B3F4-8EAD18DA8CB1',
@name = @name_p,
@active_start_time = @active_start_time_p
GO
--FIN

Grégory DELMOTTE