Mise en œuvre de Sybase XP Server

Introduction

Sybase XP Server est un serveur permettant l'utilisation des ESP (Extended Stored Procedures - Procédures stockées étendues). ASE fournit un jeu d'ESP standards. Les noms des procédures stockées étendues commencent en terme de nomenclature par "xp_" et sont localisées dans la base de données sybsystemprocs.

Introduction sur les ESP (Extended Stored Procedures)

Une procédure ESP exécute un langage procédural au lieu de commandes Transact-SQL. Une ESP système est invoquée comme une procédure système.

xp_cmdshell est à titre d'exemple une procédure stockée système étendue très utile, puisque cette dernière permet d'exécuter des commandes propres au système d'exploitation.

ESP et XP Server

Toutes les procédures étendues ESP sont implémentées par un Open Server : XP Server. Ce dernier s'exécute sur la même machine qu'Adaptive Server. XP Server démarre automatiquement lors de la première invocation d'une procédure ESP. XP Server doit être référencé dans le fichier interfaces.

Mise en œuvre

Démarrage de XP Server

Dans la plupart des cas, le serveur Sybase XPServer n'a pas à être démarré manuellement, puisque l'invocation d'une ESP déclenche automatiquement le démarrage de ce dernier serveur. Toutefois pour démarrer manuellement le serveur Sybase XP Server, la commande est indiquée ci-après :

xpserver -SXP_Server

XP_Server est le nom du serveur XP dans le fichier interfaces et xpserver est un binaire disponible dans le répertoire $SYBASE/ASE-12_x/bin

Généralités sur les ESPs

Création de procédures étendues ESPs

Après avoir créé, compilé et lié une fonction ESP dans une bibliothèque (DLL, so etc…), il est alors possible de créer la procédure ESP pour la fonction en question grâce à la syntaxe ci-dessous :

create procedure procedure_name [liste des paramètres]
as external name dll_name

Le nom de la procédure ESP doit impérativement avoir le même nom que le nom de la fonction dans la bibliothèque. Exemples : NT

create procedure getmsgs as external name "msgs.dll"

Unix (Sun Solaris et Digital)

create procedure getmsgs as external name "msgs.so"

Pour HP, l'extension des dlls est *.sl.

Pour connaître la bibliothèque associée à une procédure ESP, la procédure sp_helpextendedproc fournit cette information. Syntaxe :

exec sp_helpextendedproc ESP_procedure_name

Comportement de XP Server / Performances des procédures ESPs

Les bibliothèques sont chargées en mémoire par XP Server en réponse à une requête d'exécution d'une procédure ESP. Ces dernières bibliothèques demeurent en mémoire sauf dans les cas particuliers suivants :

  • le serveur XP s'arrête
  • la procédure système sp_freedll est invoquée
  • le paramètre serveur "esp unload dll" est appliqué (avec sp_configure).

D'autres paramètres serveur contrôlent les performances des ESPs et par voie de conséquence le comportement général de XP Server lors de la montée en charge des bibliothèques. Ces derniers paramètres sont listés ci-dessous :

  • esp execution priority
  • esp execution stacksize

Procédures ESP Système

ASE fournit en standard des ESPs système, la liste de ces ESP standards (installées dans sybsystemprocs) dépend très fortement de la plateforme sur laquelle est installée le serveur Sybase. Ces dernières sont installées avec installmaster au cours de l'installation d'un serveur ASE et résident dans sybsystemprocs.

Exemples :

exec xp_cmdshell 'copy C:\log A:\log.0102', no_output
exec xp_sendmail @recipient = "sally";"ramon",
    @subject = "Adaptive Server Backup Status",
    @message = "Adaptive Server Backup for SERVER2 is complete.",
    @copy_recipient="admin"

Plusieurs procédures stockées étendues spécifiques à Windows NT offrent des fonctionnalités Windows NT, telles que la journalisation des événements et la prise en charge de la messagerie par ASE.