Bonjour

J'ai une page web qui execute un job SSIS sur un serveur SQL. Cet évènement se produit sur le click d'un bouton de la page web.

Ce que j'aimerais, c'est d'informer l'usager durant l'exécution de ce job. Exemple : quand la mise à jour débute, quand la mise à jour se termine et afficher la progression en écrivant de petit "." dans le label durant l'exécution de la loop.

Est-ce possible ? Si oui, vous avez des suggestion car je n'ai rien trouvé sur internet pour me donner des istes de solution

Voici mon code (VB) :

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Imports Microsoft.SqlServer.Management
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
 
Partial Class Private_gestionCube
    Inherits System.Web.UI.Page
 
 
 
    Protected Sub btnstartSSISJob_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnstartSSISJob.Click
        Dim timeout As Integer = 3600
        lblLogSSISJob.Text = "Début de la mise à jour des Cubes. Un moment S.V.P. ..."
        Dim jobname As String = "jobSSIS_GestionIntervention"
        Try
            Dim con As New Microsoft.SqlServer.Management.Common.ServerConnection("LESERVEUR", "usager", "motdepasse")
            'creation de l'objet serveur
            Dim egbi2k5 As New Microsoft.SqlServer.Management.Smo.Server(con)
            'execute le job si il existe.
            If egbi2k5.JobServer.Jobs.Contains(jobname) Then
                Dim oLastRunDate As DateTime = egbi2k5.JobServer.Jobs(jobname).LastRunDate
                egbi2k5.JobServer.Jobs(jobname).Start()
                Dim nb_sec As Integer = 0
                While oLastRunDate = egbi2k5.JobServer.Jobs(jobname).LastRunDate
                    Console.Write(".")
                    egbi2k5.JobServer.Jobs(jobname).Refresh()
                    If nb_sec < timeout Then
                        nb_sec += 1
                        System.Threading.Thread.Sleep(1000)
                    Else
                        'envoi d'email
                        lblLogSSISJob.Text = "time out : le process est trop lent"
                        Console.WriteLine("time out: le process est trop lent")
                    End If
                End While
                lblLogSSISJob.Text = "La mise à jour du cube s'est terminée avec succès !"
                Console.WriteLine("fin")
                Return
            Else
                Return
            End If
        Catch ex As Exception
            lblLogSSISJob.Text = "Il y a présentement déjà une mise à jour des cubes !"
        End Try
    End Sub
 
End Class
Voici mon code (ASPX) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ Page Title="" Language="VB" MasterPageFile="~/portailSPU.master" AutoEventWireup="false" CodeFile="gestionCube.aspx.vb" Inherits="Private_gestionCube" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Button ID="btnstartSSISJob" runat="server" Text="Démarrez la mise à jour du cube" />
            <br />
            <br />
            <asp:Label ID="lblLogSSISJob" runat="server"></asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>
Merci à tous et bonne journée

Richard