Business Object et SQL Anywhere

Le service Server Intelligence Agent ne démarre plus

Contexte

Il y a des jours comme ça … tout fonctionne puis au redémarrage du serveur d’un coup alors que tout devrait être identique à la configuration de la veille …. Business Object ne démarre plus !

Impossible d’accéder à la CMC, impossible de lancer Infoview, Impossible d’ouvrir Univers Designer … Bref BO n’est plus. Avec un seul message « serveur non trouvable ou arrêté FWM 01003 null »

Un coup d’oeil rapide sur les services nous permet de comprendre quel est la cause immédiate du problème ; Le service « Server Intelligence Agent » ne démarre pas. Ce service ne démarre pas car le service SQLANYs_BOE120SQLAW (BOE120SQLAW) dont il dépend ne démarre pas. Mais pourquoi ce service ne démarre-il pas alors qu’il démarrait la veille ? L’un des fichiers appelés par le service est-il corrompu ? Voyons d’abord qu’elle est la chaine d’éxecution du service en question. Mais auparavant vérifions quel est le nom du service

Au moment de son démarrage le service en défaut nous précise que le fichier est introuvable. La chaine obtenue ci-dessus fait appel à 3 fichiers . Deux fichiers de base de données (.db) ainsi qu’un fichier exécutable. A la vérification des fichiers je vois rapidement que l’exécutable n’a pas été modifié depuis des années (normal) alors que les fichiers de base de données ont évolué la veille (tout a fait logique aussi). J’en déduis (trop rapidement) que le fichiers de base de données doivent être corrompus   

Afin d’en avoir la confirmation je vais tout de même essayer ouvrir les deux bases de données BOE120 et BOEA20_AUDIT.

L’outil dbisqlc me permet d’ouvrir la base de données. Un rapide

SELECT name FROM sysobjects WHERE type=’U’

me renvoie bien 32 lignes. La base ne semble donc pas corrompue. Il en est de même pour la base d’audit qui ne pose aucun problème d’accès.

Connexion à la base de données grace au client dbisqlc (présent dans le dossier bin de SQL Anywhere)
Afficheage de la liste des tables de la base de données BOE120 dans SQL Anywhere

Le problème ne vient donc visiblement pas des fichiers db, il reste donc le fichier dbsrv12.exe. Je décide donc de supprimer le service en question puis de recréer le service mais en local ceci peur etre fait en faisant appel à l’exécutable dbeng12.exe

Le test est concluant le nouveau service ainsi créé fonctionne parfaitement. Le fichier .db (en tout cas celui de BOE120) n’est absolument pas en cause … quelque chose ne va pas avec l’exécutable dbsrv12 mais quoi ….

"Regardez donc ci-dessus; là où je vous disais que la chaine d'exécution du service BOE120SQLAW posait problème.... vous verrez que la partie où l'on fait appel à l'exécutable commence par une double apostrophe ("").... oui c'était aussi simple que cela, mais encore fallait-il le trouver 🙂 "
Admin
Data Lover
Résolution

Problème résolu ! Il reste une énigme : Pourquoi la chaine d’exécution du service a-t-elle ainsi été altérée ?

Si vous avez la réponse je suis preneur