Une introduction aux accès via OLE DB - SAS 8

SAS

Le but de ce tutoriel est de vous présenter les accès via OLE DB sur SAS.

Cet article est disponible ici : Introduction SAS OLE DB

- Titre : Une introduction aux accès via OLE DB - SAS 8

- Auteur : SAS

- Parution : 5 novembre 2008

- Licence : Copyright ® 2013 SAS. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II-A. Les différents modes d'accès aux bases externes

- II-A-1. Avec Base SAS

- II-A-2. Avec SAS/ACCESS to PC Files Format

- II-A-3. Avec SAS/ACCESS to ODBC

- II-A-4. Avec SAS/ACCESS to OLE DB

- II-A-4-a. Connexion via les services OLE DB

- II-A-4-b. Connexion directe au fournisseur OLE DB

- II-A-5. Tableau récapitulatif

- II-B. Exemples d'utilisation de SAS en tant que consommateur de données OLE DB

- II-B-1. Assignation de bibliothèques et opérations basiques sur des données externes

- II-B-2. Création de vue et utilisation de SQL Pass-through

- II-B-3. Jointure entre bases de formats différents et stockage externe pilotés depuis SAS

- I-C. Présentation des fournisseurs OLE DB SAS

- II-C-1. SAS Local Data Provider

- II-C-2. SAS/SHARE Data Provider

- II-C-3. SAS IOM Data Provider

- II-C-4. SAS OLE DB for OLAP Provider for SAS/MDDB Server

I - Introduction

OLE DB est une technologie Microsoft, en fait une API (application programming interface ou interface de programmation) permettant l'accès à des données sous des formes diverses et variées  relationnelles, mais aussi non-relationnelles et multi-dimensionnelles  par l'intermédiaire d'une seule interface de programmation COM.
OLE DB n'est pas un produit, au sens traditionnel du terme : ce qui entre en jeu, c'est comment les consommateurs OLE DB (consumers) communiquent avec les fournisseurs de données OLE DB (providers). Il se présente donc comme un modèle multi-couche, où les composants serveur contiennent les données, et les composants client établissent les connexions et accèdent aux données. Les fournisseurs et les consommateurs sont des objets COM, dialoguant en utilisant une série d'interfaces COM.

Nous allons voir dans ce document comment la technologie OLE DB peut être utilisée avec le Système SAS, d'abord du côté consommateur de données et ensuite du côté fournisseur de données (version du Système SAS utilisée : 8.2 (TS2M0)). Auparavant, nous ferons un rappel des autres modules existant dans l'offre SAS pour accéder à des bases externes, OLE DB étant le dernier module mis en avant dans ce domaine, avec la version 8 du Système SAS.

II-A - Les différents modes d'accès aux bases externes

Dans notre offre, nous proposons plusieurs modules pour accéder à des données externes : Base SAS, SAS/ACCESS to ODBC, SAS/ACCESS to PC Files Format et la famille des SAS/ACCESS to “un SGBD pour un accès natif aux données (Oracle, DB2, Sybase, etc).
Ce dernier ne sera pas abordé davantage dans le cadre de ce document, des spécificités existant dans le paramétrage, selon la base de données considérée.
Les trois premiers, de même que le module SAS/ACCESS to OLE DB, permettent par exemple de lire des fichiers Excel ou d'exporter des données SAS au format Excel.
Le code à écrire dans SAS étant différent selon le module utilisé, nous allons voir ci-dessous des exemples de syntaxe dans chacun des quatre cas : Base SAS et les SAS/Access to PC Files Formats, ODBC et OLEDB.

II-A-1 - Avec Base SAS

Le code se base sur les liens DDE, la plus ancienne méthode, historiquement, utilisée dans SAS. La première contrainte est que les deux applications entrant en communication doivent être en cours d'exécution. Le programme ci-dessous lit un fichier Excel - qui doit déjà être ouvert - contenant des données sur dix lignes et trois colonnes, dans la feuille nommée “Feuil1.

*-- Lecture d'un fichier Excel depuis SAS, via une étape DATA --;
filename xlsdde DDE "excel|feuil1!l1c1:l10c3";
data ma_table;
infile xlsdde;
input variable1$ variable2 variable3;
run;

Au niveau de l'écriture à proprement parler du code, plusieurs autres contraintes existent :
- il faut spécifier la plage de données sur laquelle la lecture sera faite (dans l'instruction FILENAME)
- et écrire l'étape data adéquate, où la totalité des noms des variables et leur type doivent être spécifiés explicitement, ce qui peut être fastidieux dans le cas de fichiers volumineux (en terme de nombre de variables).

II-A-2 - Avec SAS/ACCESS to PC Files Format

Ce module permet l'accès à une liste définie de sources de données. En version 8, nous proposons l'accès aux fichiers au format :
- Microsoft Excel (2000, 97, 7, 5, 4)
- Microsoft Access (2000, 97)
- DBase
- Lotus (1, 3, 4)
- Texte

Avant la version 8, les procédures à utiliser étaient ACCESS (pour importer ce type de données dans SAS) et DBLOAD (pour exporter des tables SAS sous ces formats). Avec la version 8, deux nouvelles procédures sont apparues : IMPORT et EXPORT. Leur syntaxe est plus simple, avec moins d'options à préciser par défaut.
Nous proposons également une interface à ces procédures (en passant par les menus File > Import Data, et Export Data), laquelle génère automatiquement le code adéquat.

*-- Lecture d'un fichier Excel avec la procédure IMPORT en utilisant la syntaxe minimale -- ;
proc import datafile='c:\excel\pays.xls' out=matable;
run;
*-- Par défaut, c'est la première feuille qui est lue. L'instruction range permet d'en choisir une autre -- ;
proc import datafile='c:\excel\noms.xls' out=matable;
range=&#148;Diplôme$&#8221;
run;
*-- La syntaxe est différente selon le type de fichier lu -- ;
*-- Pour lire une table MS ACCESS, le nom de la base doit être indiqué dans l'instruction database, et le nom de la table dans l'option table. -- ;
*-- L'ajout de l'option dbms est nécessaire pour indiquer le format de la base de données à lire -- ;
proc import table='noms' out=work.noms dbms=access;
database="C:\tests\access\mabase.mdb&#8221;
run;

II-A-3 - Avec SAS/ACCESS to ODBC

Le module permet d'accéder à une source de données, dès lors qu'elle dispose d'un pilote ODBC, sur l'environnement où SAS est installé.
L'étape préliminaire nécessaire est la configuration du pilote ODBC de la source de données. C'est à ce niveau que le classeur Excel, sur lequel sera fait la connexion, est spécifié.
Puis, dans SAS, cette connexion se fait soit via une procédure SQL, soit en utilisant une instruction libname (depuis la version 8) et le moteur ODBC.

*-- Information : le nom de la source de données définie dans l'administrateur de sources de données ODBC est « Excel pour SAS » -- ;
*-- Cette procédure SQL permet par exemple de créer une table SAS temporaire contenant les données de la feuille Nom$ -- ;
proc sql;
connect to odbc (dsn="Excel pour SAS");
create table test2 as
select * from connection to odbc
(select * from "Noms$");
disconnect from odbc;
quit;

*-- Ou l'assignation d'un bibliothèque pointant sur le classeur Excel permet ensuite de visualiser
ses feuilles dans l'explorateur SAS, les lire ou en écrire de nouvelles -- ;
libname xlsdata odbc dsn="Excel pour SAS";

Voyons maintenant les opérations possibles suite à la définition de la bibliothèque utilisant une source de données ODBC Excel.
- Visualisation des feuilles du classeur Excel via l'explorateur SAS.

- Lecture des feuilles Excel dans SAS.
Une syntaxe particulière doit être utilisée, en raison du caractère $ apparaissant en suffixe des feuilles Excel :

data test1;
set xlsdata.'Diplôme$'n;
run;

Ecriture de nouvelles feuilles Excel depuis SAS.
L'insertion de nouvelles feuilles dans le classeur Excel se fait simplement avec une étape data.
Attention, il faut au préalable vérifier que l'option “lecture seule est décochée, au niveau de la configuration de driver ODBC Excel (“Excel pour SAS).

Ensuite, la syntaxe est “classique :

data xlsdata.adresses;
set matable;
run;

Et la vérification immédiate, soit par l'explorateur SAS, soit en ouvrant le classeur Excel (il faut au préalable désassigner la bibliothèque dans SAS - libname xlsdata clear;).

L'opération inverse, à savoir la lecture d'une table SAS depuis une application externe, se fait en utilisant le pilote ODBC de SAS (fourni sur nos CDs d'installation). Dans cette configuration, le module SAS/Access to ODBC n'est pas nécessaire (Base SAS suffit).

II-A-4 - Avec SAS/ACCESS to OLE DB

De la même manière que pour l'accès via ODBC, SAS/ACCESS to OLE DB permet d'accéder à toute source de données mettant à disposition un fournisseur OLE DB. OLE DB étant une technologie Microsoft, le module n'est disponible que sur plate-formes Windows.

Dans SAS, il existe deux méthodes pour se connecter à une base via OLE DB, en utilisant soit les services OLE DB (la méthode utilisée par défaut dans l'interface SAS/ACCESS), soit le fournisseur OLE DB. Elles se différencient sur quelques points. Au niveau de la syntaxe, la première présente l'avantage d'être plus simple et éventuellement assistée. Et il est également préférable de l'utiliser pour bénéficier d'une optimisation des performances.

II-A-4-a - Connexion via les services OLE DB

Très souvent, c'est la méthode la plus rapide et facile, dans la mesure où si le nom du fournisseur nous est inconnu, une interface est disponible pour trouver ce nom ainsi que les propriétés adéquates.
Pratiquement, il suffit de soumettre une instruction LIBNAME minimale (uniquement avec un libref et le moteur OLE DB spécifiés) et d'entrer les paramètres nécessaires à la connexion dans l'interface. Voyons comment cela se passe sur un exemple.

libname oledbxls oledb;

Cette instruction présume que l'on souhaite être prompté (l'option prompt=yes est ajoutée implicitement) et ouvre la fenêtre ci-dessous.

Il existe une astuce pour alors récupérer tous les paramètres passés lors de l'utilisation de l'interface, pour compléter l'instruction libname, et ainsi automatiser la déclaration de la bibliothèque dans son programme. C'est très utile dans le cadre de programmes qui seront soumis en batch par exemple.
Cette astuce consiste à utiliser le contenu de la macro-variable sysdbmsg. La log affiche alors ce type d'information :

84 %put &sysdbmsg;
OLEDB: Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data
Source=c:\tests\excel\noms.xls;Extended Properties=Excel 8.0;Persist Security Info=True

laquelle est réutilisable directement dans une instruction libname, au niveau de l'option INIT_STRING= (valorisée à tout ce qui est affiché après OLEDB: dans la log).

libname new oledb
init_string = "Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source= c:\tests\excel\noms.xls;Extended Properties=Excel 8.0;Persist Security Info=True";

Toutes les options ne sont pas indispensables, l'instruction libname peut être simplifiée comme suit :

libname new oledb
init_string="Provider = Microsoft.Jet.OLEDB.4.0;
Data Source = c:\tests\excel\noms.xls;Extended Properties = Excel 8.0";

II-A-4-b - Connexion directe au fournisseur OLE DB

Dans ce cas, des options supplémentaires doivent être spécifiées au niveau de l'instruction libname, à savoir :
 PROVIDER=, pour indiquer le nom du fournisseur OLE DB,
 OLEDB_SERVICES=NO (par défaut, elle est positionnée à Yes), il faut la positionner à No pour une connexion directe au fournisseur OLE DB,
 PROPERTIES=, pour spécifier la source de données.
Il faut aussi savoir que l'option INIT_STRING n'est pas autorisée.

*-- Définition d'une bibliothèque pointant sur une base Oracle -- ;
libname oledbora oledb provider=MSDAORA
properties=("user id"=scott "password"=tiger
"data source"=oracle_path)
oledb_services=no;
*-- Définition d'une bibliothèque pointant sur un fichier Excel -- ;
libname oledbexc oledb provider="Microsoft.Jet.OLEDB.4.0"
properties=("data source" = 'C:\tests\excel\nom.xls')
provider_string="Excel 8.0"
oledb_services=no;

Les deux exemples ci-dessus montrent que la syntaxe varie sensiblement selon le fournisseur utilisé. Ainsi, lors d'une connexion à Oracle, une authentification est nécessaire (user = et password =) et, au niveau du paramètre « data source », le nom de l'instance Oracle doit être renseigné. L'option schema est également souvent utile, quand l'utilisateur se connectant n'est pas propriétaire des tables qu'il souhaite visualiser (par défaut, seules sont visibles dans la bibliothèque les tables créées en utilisant son propre user Oracle). Cette option s'ajoute au même niveau que provider = ou properties =.
Ou, lors de l'utilisation du fournisseur Microsoft Jet 4.0, il est nécessaire d'indiquer la chaîne « Excel 8.0 » pour que le fournisseur reconnaisse le type du fichier à traiter.

Le problème majeur de cette méthode est la nécessité de connaître à l'avance la valeur des paramètres comme le nom du fournisseur OLE DB. Or OLE DB ne dispose pas d'une interface du type de celle d'ODBC (avec son administrateur de source de données).
Il existe néanmoins une astuce pour lister, dans SAS, les fournisseurs disponibles sur sa machine, mais elle nécessite de connaître au moins l'un de ces fournisseurs (cf le code ci-dessous).

*-- Pour afficher (dans la fenêtre Output) la liste des fournisseurs OLE DB disponibles sur la machine où la procédure SQL est exécutée -- ;
proc sql;
connect to oledb
(init_string="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=c:\tests\excel\noms.xls;Extended Properties=Excel 8.0");
select * from connection to oledb
(OLEDB::PROVIDER_INFO());
run;
quit;

II-A-5 - Tableau récapitulatif

Le type de données à accéder, la nécessité de lire et/ou écrire dans tel ou tel type de format, la disponibilité d'un pilote ODBC ou OLE DB détermineront le (ou les) module(s) SAS utilisable(s).
Le tableau ci-dessous récapitule ces informations pour les quatre modules cités précédemment.

Module

Accès en lecture sur les données externes

Accès en écriture sur les données externes

Moteur V8 pour les instructions libname

Sources de données accessibles

Base (DDE)

Oui

Oui

Non

Applications Windows

SAS/Access to PC Files Format

Oui

Non

Non

Excel, Lotus, MS Access, Dbase

SAS/ACCESS to ODBC

Oui

Oui

Oui

Toute application disposant d'un pilote ODBC sur la machine

SAS/ACCESS to OLEDB

Oui

Oui

Oui

Toute application disposant d'un pilote OLE DB sur la machine

SAS/ACCESS to “un SGBD

Oui

Oui

Oui

Oracle, DB2, Sybase, SQL Server, R/3, Informix, etc

II-B - Exemples d'utilisation de SAS en tant que consommateur de données OLE DB

Après avoir étudié les deux méthodes et la syntaxe pour accéder à des bases externes depuis SAS - ici consommateur de données - en utilisant le module SAS/Access to OLEDB, il est intéressant d'explorer les capacités de ce type d'accès. Ce sera l'objet de cette deuxième partie, par le biais de trois exemples d'utilisation.

II-B-1 - Assignation de bibliothèques et opérations basiques sur des données externes

Dans ce premier exemple, nous allons assigner deux bibliothèques SAS sur des bases Oracle et SQL Server. Elles sont ainsi accessibles via l'explorateur SAS mais aussi manipulables via des étapes data ou dans des procédures SAS, en utilisant la même syntaxe que pour des tables SAS, à savoir libref.table.

*-- Assignation de la bibliothèque OLEDBORA sur Oracle -- ;
libname oledbora oledb
provider="MSDAORA"
properties=("User ID"=scott "Data Source"=ServOra Password=tiger)
oledb_services=yes;
*-- Assignation de la bibliothèque OLEDBSQL sur SQL Server -- ;
libname oledbsql oledb
init_string="Provider=SQLOLEDB.1;Initial Catalog=Northwind;
Data Source=ServSql;Integrated Security=SSPI;
Persist Security Info=True";
*-- Description des deux bases via des procédures Contents -- ;
proc contents data=oleora.salaires;
run;
proc contents data=oledbsql.employes;
run;

II-B-2 - Création de vue et utilisation de SQL Pass-through

Plutôt que d'utiliser des bibliothèques, il est possible d'envoyer des requêtes directement à un SGBD, en utilisant la procédure SQL et le SQL Pass-through. Deux sections peuvent être distinguées dans le code de la procédure SQL ci-dessous : la connexion au SGBD, avec l'instruction CONNECT TO OLEDB, et ensuite le traitement demandé. Dans notre exemple, ce sera la création d'une vue avec :
 agrégation sur une variable (group by sur code emploi),
 sélection de certaines modalités de cette variable (clause where sur code emploi),
 calcul de la moyenne sur une autre variable (fonction avg sur salaire),
 et comptage du nombre d'individus (count(*)).

proc sql;
connect to OLEDB (provider="MSDAORA"
properties=("User ID"=scott "Data Source"=ServOra
Password=tiger)
oledb_services=yes);
create view consolidation as
select * from connection to OLEDB
(select codeemploi as "Code",
avg(salaire) as "Salaire_Moyen",
count(*) as "Nb_Employes"
from salaires
where codeemploi in ('PILOT1','FLTAT2','FINCLK')
group by CodeEmploi);
quit;
*-- Affichage de la vue sous format RTF -- ;
ods rtf file='c:\temp\euro.rtf';
proc print;
format salaire_moyen eurox8.;
run;
ods rtf close;

II-B-3 - Jointure entre bases de formats différents et stockage externe pilotés depuis SAS

Pour aller encore plus loin, le Système SAS peut être utilisé pour opérer une jointure entre une base Oracle et une base SQL Server, dont le résultat sera stocké sous un autre format, Excel par exemple. Aucune table ou résultat intermédiaire n'est stocké dans SAS.
Voyons comment cela se passe sur un exemple, reprenant les tables décrites dans le point 1, à savoir Salaires stockée dans Oracle et Employes dans SQL Server.

*-- Définition d'une bibliothèque, sur un nouveau fichier Excel -- ;
libname oleexcel oledb
init_string="Provider = Microsoft.Jet.OLEDB.4.0;
Data Source = c:\tests\excel\fusion.xls;Extended Properties = Excel 8.0";
*-- Jointure entre les deux bases externes (SQL Server et Oracle) dans un fichier Excel, via une étape data : création de la feuille fusion -- ;
*-- Les bibliothèques ont été assignées dans le point 1 -- ;
data oleexcel.fusion(drop=pays ville);
merge oledbsql.employes oleora.salaires ;
by id;
if
pays='FRANCE'; run;
*-- ême
M opération, avec une procédure SQL : feuille fusion 2 créée -- ; proc sql;
create table oleexcel.fusion2 as
select dateembauche, ora.id, codeemploi, salaire, division, nom, prenom
from oleora.salaires as ora, oledbsql.employes as sqlsv
where ora.id = sqlsv.id and pays='FRANCE';
quit;

I-C - Présentation des fournisseurs OLE DB SAS

Les deux premières parties de ce document exposaient comment accéder à des bases externes à SAS, depuis une session SAS.

La seconde va être consacrée à l'opération inverse : accéder à des données SAS, depuis une application externe. SAS sera donc ici fournisseur de données. Cette opération était, avant l'introduction des technologies OLE DB dans SAS, possible uniquement en utilisant les pilotes ODBC SAS ou ODBC Universel, à la condition que l'application cliente adhérait au standard ODBC.
Avec la version 8, trois fournisseurs OLE DB SAS sont disponibles, lesquels permettent d'accéder aux tables et vues SAS stockées sur toute plate-forme où le Système SAS est supporté (et donc peut être installé), à partir d'une application compatible OLE DB - ADO.Il s'agit du :
 SAS Local Data Provider, pour accéder à des données SAS en local, sur son PC
 SAS/SHARE Data Provider, pour accéder à des données SAS sous le contrôle d'un serveur SAS/SHARE.
 SAS IOM Data Provider, pour accéder à des données SAS localisées sur un serveur distant, où le module Integration Technologies est installé. La connexion se fait alors via le protocole Bridge et un object spawner.
 SAS OLE DB for OLAP Provider for SAS/MDDB Server, se distingue des trois précédents dans la mesure où il permet l'accès aux bases multi-dimensionnelles SAS. La connexion se fait via un serveur Open Olap, démarré sur le serveur SAS. Nous utiliserons Excel pour tester l'accès aux données SAS via les trois premiers fournisseurs listés ci-dessus.

II-C-1 - SAS Local Data Provider

Ce fournisseur OLE DB est disponible avec le module Base SAS et fournit un accès sur des tables SAS.
Il est installé dans le répertoire “C:\Program Files\SAS Institute\Shared Files\SAS OLE DB Data Providers (chemin proposé par défaut), comme le seront d'ailleurs les autres fournisseurs OLE DB SAS. Il est possible de vérifier sa présence en s'assurant que le fichier sasafbas.dll existe dans ce répertoire.

Aucun paramétrage n'est nécessaire par défaut dans SAS. La connexion est faite automatiquement au serveur SAS local. Toutes les tables visibles dans l'explorateur Windows seront accessibles via ce type de connexion, qu'elles aient été créées sur :
 Windows, avec la version 6, 7 ou 8 du Système SAS,
 ou Unix, OS/2, Open VMS Alpha, avec la version 7 ou 8 du Système SAS (utilisation de la fonctionnalité CEDA - intégrée à Base SAS depuis la version 8.2 - permettant de lire des tables SAS provenant d'un environnement différent).

Test de connexion depuis Excel.

A partir de la version Excel 2002 (du pack Microsoft Office XP), il est possible d'accéder à des données externes via OLE DB. Voyons sur un exemple les étapes à suivre.

II-C-2 - SAS/SHARE Data Provider

Ce fournisseur OLE DB est disponible avec le module SAS/SHARE. Il est possible de vérifier sa présence en s'assurant que le fichier sasafshr.dll existe dans le sous-répertoire “SAS OLE DB Data Providers. Deux fichiers d'aide sont également présents dans ce répertoire : sasafshr.chm et adocook.chm, pour vous aider dans l'utilisation de ce fournisseur.

Un serveur SAS/Share doit être démarré sur le serveur, avec une syntaxe telle que :

PROC SERVER ID=shr2 authenticate=optional;
allocate library donnees "c:\tests\v8";
RUN;

Une bibliothèque appelée DONNEES est définie, laquelle sera ensuite utilisée dans les test de connexion.

Test de connexion depuis Excel.

Le principe reste le même que lors de l'utilisation du fournisseur SAS Local Data Provider dans la section précédente.
Les différences vont porter bien sûr sur les onglets de l'écran “Propriétés des liaisons de données “ ou “Data link properties, dans l'onglet Fournisseur bien sûr et sur l'onglet “Connection. Dans “Source de données, il faut spécifier le nom du serveur SAS/SHARE (shr2 dans notre exemple) et dans Emplacement, le nom de la machine où le serveur SAS/SHARE a été démarré (localhost). La case Mot de passe vide doit être cochée.

II-C-3 - SAS IOM Data Provider

Ce fournisseur est disponible avec le module Integration Technologies. Il est possible de vérifier sa présence en s'assurant que le fichier sasaorio.dll existe dans le sous-répertoire “SAS OLE DB Data Providers. Si ce n'est pas le cas, il peut être installé à partir de l'exécutable inttech.exe localisé sur le CDROM SAS Client-Side Components, dans le répertoire D:\inttech\install.

Côté configuration, un minimum est nécessaire sur le serveur. En effet, un processus “SAS Object Spawner doit être démarré sur la machine où le module Integration Technologies est installé. Lors de demandes de connexion d'applications clientes, une session SAS est alors démarrée.

Test de connexion depuis Excel.

Les informations nécessaires sont le numéro de port et le nom de la machine sur laquelle l'object spawner a été démarré, à indiquer respectivement dans les champs Source de données et Emplacement. Le nom de l'utilisateur et le mot de passe devront aussi être renseignées pour se connecter à la machine distante.

II-C-4 - SAS OLE DB for OLAP Provider for SAS/MDDB Server

Ce dernier fournisseur se distingue des autres dans la mesure où il permet l'accès aux structures multi-dimensionnelles SAS.

Les grandes étapes à suivre, pour préparer l'accès aux bases multi-dimensionnelles (MDDB) via ce fournisseur, sont les suivantes (opérations à réaliser sur le serveur) :
 enregistrer la MDDB dans un référentiel
 ajouter l'attribut OLAPMETA au(x) MDDB(s)
 démarrer un serveur Open Olap ; la commande est :
AF C=SASHELP.OPNOLAP.LISTENER.SCL PORT=5154 (5154 est le port utilisé par défaut, quand l'option n'est pas ajoutée)
Des informations détaillées sont disponibles dans l'aide en ligne SAS : SAS System Help .. Help on SAS Software Products .. Open Olap Server.

Du côté client, le fournisseur SAS OLE DB for OLAP Provider for SAS/MDDB Server doit être installé. Il est disponible sur le CDROM SAS Client-Side Components, dans la rubrique “SAS/MDDB Server Software. Le nom de l'exécutable est ooscl30.exe. En choisissant une installation personnalisée (custom), il faut cocher Open OLAP Server (Client). Le répertoire d'installation proposé par défaut est C:\Program Files\SAS Institute\Shared Files\Open OLAP Solutions, la dll concernée porte le nom SASMprov.dll.
Un deuxième composant peut être installé. Il est intéressant de le mentionner car il permet d'administrer le serveur Open Olap. Ainsi la commande ping permet de vérifier que le serveur est bien démarré et qu'il répond, et stop de l'arrêter. Ce composant apparaît lors du processus d'installation sous la dénomination Open OLAP Server (Administrator) et est installé par défaut dans le répertoire C:\Program Files\SAS Institute\Open OLAP Server.

Voyons maintenant concrètement sur un exemple comment une MDDB SAS peut être accédée depuis Microsoft Excel.

La définition de la source de données est visualisable dans le fichier prdmddb.oqy, stocké par défaut (sur Windows 2000) dans le répertoire :
:\Documents and Settings\userid\Application Data\Microsoft\Requêtes