ASP.NET - VB - connection à SQL - Roles dans active directory
Bonjour
Voici ce que je veux faire.
J'ai dans un site web, un répertoire "private" qui est protégé par un role d'Active directory (groupe). L'utilisateur doit faire parti de ce groupe pour avoir accès aux pages de ce répertoire. Dans mon web.config au root du site web j'ai ajouté ceci :
Code:
1 2 3 4 5 6 7 8 9
| <location path="Private">
<system.web>
<authorization>
<allow users="14REGIONAL\UnUsagerAdmin"/>
<allow roles="BUILTIN\Administrators, DOMAIN\UnGroupeAdmin"/>
<deny users="*"/>
</authorization>
</system.web>
</location> |
Ceci fonctionne parfaitement. Maintenant, dans une des pages du répertoire Private, j'ai une page qui se connecte à SQL Serveur et permet d'exécuter une job dans SQL. Cette page fonctionne à merveille quand j'utilise l'usager SA de sql serveur. Par contre, quand j'utilise dans le code un compte usager AD (Qui à tout les droits possibles sur le serveur et le serveur SQL), il me donne une erreur comme quoi l'usager n'a pas les autorisations ????
Est-ce qui ne comprends pas comment faire ?? Est-ce que c'est vraiment l'usager qui n'a pas les droits nécéssaire pour exécuter le job SQL ? ;-) J'ai besoin d'aide ! MErci beaucoup
Code de ma fonction
Code:
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
| Protected Sub btnstartSSISJob_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnstartSSISJob.Click
Dim timeout As Integer = 3600
Dim jobname As String = "jobSSIS_GestionIntervention"
Try
Dim con As New Microsoft.SqlServer.Management.Common.ServerConnection()
con.ServerInstance = "NomduServeur"
con.ConnectAsUserName = "domain\NomDeLusager"
con.ConnectAsUserPassword = "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 'PLANTE ICI
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
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 SqlException
If ex.ErrorCode = -2146232060 Then
lblLogSSISJob.Text = "Il y a présentement déjà une mise à jour des cubes !"
End If
End Try
End Sub |