2009-08-05 6 views
0

J'ai installé un service Windows vb.net sur une machine Windows 2008, qui tente de se connecter à SQL 2005. Le service démarre avec succès, mais ne peut pas voir le base de données. Le journal des événements a l'entrée suivante.Erreur dans le service Windows vb.net lors de la connexion à SQL

La description de l'ID d'événement 0 de la source SU4.ESMR.DAL.Job.FillPriorityJobByType (oJobDS, TypeID: 3 est introuvable.) Le composant qui déclenche cet événement n'est pas installé sur votre ordinateur local ou l'installation est endommagée . Vous pouvez installer ou réparer le composant sur l'ordinateur local.

Cela a été testé localement sur XP et 2008. Tous les environnements sont 32 bits.

Répondre

0

il n'y a pas grand-chose à faire ici, mais il semble pour moi comme le compte de service n'a pas les droits d'accès requis à la base de données

Si vous nstallé le service à exécuter sous Service réseau ou Local, créez un compte sur le serveur qui a accès à la base de données et modifiez-le pour utiliser ce service.

0

Cela me semble être un problème de sécurité. Je vérifierais les autorisations sur le compte que le service utilise pour se connecter à sql.

0

Il y aura probablement une exception gérée non gérée associée à cet événement. Si les détails de cette exception n'apparaissent pas dans le journal des événements, vous pouvez créer un filtre de la dernière chance qui intercepte toute exception non gérée, puis l'enregistre où vous le souhaitez.

Pour ce faire, ajoutez d'abord cette ligne au début de votre code de service de démarrage:

AddHandler Application.ThreadException, AddressOf LogException 

Ensuite, créez la procédure d'enregistrement:

Private Sub LogException(ByVal sender As Object, _ 
         ByVal e As System.Threading.ThreadExceptionEventArgs) 
    'This method will be called by any unhandled managed exception, assuming 
    'that a debugger isn’t attached. You should log the exception here. 
End Sub 
0

Votre service Windows par fonctionne par défaut sous la locale Compte système, vous pouvez le voir en consultant l'onglet "Connexion" de votre service dans le composant logiciel enfichable MMC Services. Les chances sont que ce compte n'a pas d'autorisations pour votre base de données. Vous pouvez faire en sorte que le service s'exécute sous un compte différent (vous pouvez essayer d'exécuter le service comme vous-même pour voir si cela résout les problèmes), mais vous devez ensuite modifier les autorisations sur le compte système local pour leur donner accès.

Questions connexes