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
.
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
.
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
où 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
.
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é (avecsp_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èmes
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.