Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Difference entre Proc Stock, Vue et requete standard

17 réponses
Avatar
David Bizier
Bonjour,

J'ai une requête SQL assez complexe qui est lancé sur mon site Internet
chaque fois qu'un usager ouvre ma page ASP.

Je voudrais savoir ce qui est le plus performant:

- Appeler de ma page une procédure stocké

- Appeler une vue

- Créer un objet recordSet et lui passer la requête SQL et
Récupérer le résultat.


Je suis un peu mélanger entre c'est trois options... Est-ce que
Quelqu'un pourrait m'éclairer svp ?

Merci!
David
Sent using the Microsoft Entourage 2004 for Mac Test Drive.

10 réponses

1 2
Avatar
Sylvain Lafontaine
Procédure stockée avec le préfixe dbo. définit pour le nom de la SP ainsi
que pour tous les objets référencés à l'intérieur. N'utilisez pas le
préfixe sp_ au début du nom. Exemple:

Create Procedure dbo.StoredProcedure1 (...)
As
set nocount on
select * from dbo.table1
....

Si vous utilisez pratiquement toujours les mêmes paramètres d'appel à votre
procédure stockée, cacher les résultats quelque part en mémoire pourrait
également servir.

S. L.

"David Bizier" wrote in message
news:BCF4875D.281%
Bonjour,

J'ai une requête SQL assez complexe qui est lancé sur mon site Internet
chaque fois qu'un usager ouvre ma page ASP.

Je voudrais savoir ce qui est le plus performant:

- Appeler de ma page une procédure stocké

- Appeler une vue

- Créer un objet recordSet et lui passer la requête SQL et
Récupérer le résultat.


Je suis un peu mélanger entre c'est trois options... Est-ce que
Quelqu'un pourrait m'éclairer svp ?

Merci!
David
Sent using the Microsoft Entourage 2004 for Mac Test Drive.



Avatar
Sylvain Lafontaine
Explications supplémentaires:

On doit préciser l'usager dbo. comme propriétaire de la procédure et des
éléments à l'interne car sinon SQL-Server doit vérifier à chaque fois s'il
n'existe pas une autre procédure ou d'autres tables avec le même nom mais
sous un nom d'usager différent; ce qui l'empêche de compiler la procédure au
complet et de mettre en cache la compilation une fois pour toute.
L'utilisation de procédures et de tables différentes ayant le même nom mais
distinguées par leurs noms d'usagers est quelque chose très très rarement
utilisé par les programmeurs mais néanmoins on doit vivre avec et, par
conséquent, toujours rajouter le préfixe dbo. afin d'accélérer les choses.

De même, on ne doit pas utiliser le préfixe sp_ ce celui-ci sert à
indiquer à SQL-Server qu'il s'agit de procédures spéciales reliées au
système, avec un ordre d'appel et de vérification différents des procédures
stockées créées par les usagers. Cela ralentit indûment le système et peut
même être la cause de certains bugs subtils dans certains cas.

Ces deux principes sont décrits dans le BOL (documentation en ligne) de
SQL-Server.

S. L.

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:
Procédure stockée avec le préfixe dbo. définit pour le nom de la SP ainsi
que pour tous les objets référencés à l'intérieur. N'utilisez pas le
préfixe sp_ au début du nom. Exemple:

Create Procedure dbo.StoredProcedure1 (...)
As
set nocount on
select * from dbo.table1
....

Si vous utilisez pratiquement toujours les mêmes paramètres d'appel à


votre
procédure stockée, cacher les résultats quelque part en mémoire pourrait
également servir.

S. L.

"David Bizier" wrote in message
news:BCF4875D.281%
> Bonjour,
>
> J'ai une requête SQL assez complexe qui est lancé sur mon site Internet
> chaque fois qu'un usager ouvre ma page ASP.
>
> Je voudrais savoir ce qui est le plus performant:
>
> - Appeler de ma page une procédure stocké
>
> - Appeler une vue
>
> - Créer un objet recordSet et lui passer la requête SQL et
> Récupérer le résultat.
>
>
> Je suis un peu mélanger entre c'est trois options... Est-ce que
> Quelqu'un pourrait m'éclairer svp ?
>
> Merci!
> David
> Sent using the Microsoft Entourage 2004 for Mac Test Drive.
>




Avatar
Sylvain Lafontaine
Explications supplémentaires:

On doit préciser l'usager dbo. comme propriétaire de la procédure et des
éléments à l'interne car sinon SQL-Server doit vérifier à chaque fois s'il
n'existe pas une autre procédure ou d'autres tables avec le même nom mais
sous un nom d'usager différent; ce qui l'empêche de compiler la procédure au
complet et de mettre en cache la compilation une fois pour toute.
L'utilisation de procédures et de tables différentes ayant le même nom mais
distinguées par leurs noms d'usagers est quelque chose très très rarement
utilisé par les programmeurs mais néanmoins on doit vivre avec et, par
conséquent, toujours rajouter le préfixe dbo. afin d'accélérer les choses.

De même, on ne doit pas utiliser le préfixe sp_ ce celui-ci sert à
indiquer à SQL-Server qu'il s'agit de procédures spéciales reliées au
système, avec un ordre d'appel et de vérification différents des procédures
stockées créées par les usagers. Cela ralentit indûment le système et peut
même être la cause de certains bugs subtils dans certains cas.

Ces deux principes sont décrits dans le BOL (documentation en ligne) de
SQL-Server.

S. L.

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:
Procédure stockée avec le préfixe dbo. définit pour le nom de la SP ainsi
que pour tous les objets référencés à l'intérieur. N'utilisez pas le
préfixe sp_ au début du nom. Exemple:

Create Procedure dbo.StoredProcedure1 (...)
As
set nocount on
select * from dbo.table1
....

Si vous utilisez pratiquement toujours les mêmes paramètres d'appel à


votre
procédure stockée, cacher les résultats quelque part en mémoire pourrait
également servir.

S. L.

"David Bizier" wrote in message
news:BCF4875D.281%
> Bonjour,
>
> J'ai une requête SQL assez complexe qui est lancé sur mon site Internet
> chaque fois qu'un usager ouvre ma page ASP.
>
> Je voudrais savoir ce qui est le plus performant:
>
> - Appeler de ma page une procédure stocké
>
> - Appeler une vue
>
> - Créer un objet recordSet et lui passer la requête SQL et
> Récupérer le résultat.
>
>
> Je suis un peu mélanger entre c'est trois options... Est-ce que
> Quelqu'un pourrait m'éclairer svp ?
>
> Merci!
> David
> Sent using the Microsoft Entourage 2004 for Mac Test Drive.
>




Avatar
Patrice
Voir déjà si la requête elle-même se déroule dans de bonnes conditions
(utilisation des index ?)

Patrice

--

"David Bizier" a écrit dans le message
de news:BCF4875D.281%
Bonjour,

J'ai une requête SQL assez complexe qui est lancé sur mon site Internet
chaque fois qu'un usager ouvre ma page ASP.

Je voudrais savoir ce qui est le plus performant:

- Appeler de ma page une procédure stocké

- Appeler une vue

- Créer un objet recordSet et lui passer la requête SQL et
Récupérer le résultat.


Je suis un peu mélanger entre c'est trois options... Est-ce que
Quelqu'un pourrait m'éclairer svp ?

Merci!
David
Sent using the Microsoft Entourage 2004 for Mac Test Drive.



Avatar
Patrice
Voir déjà si la requête elle-même se déroule dans de bonnes conditions
(utilisation des index ?)

Patrice

--

"David Bizier" a écrit dans le message
de news:BCF4875D.281%
Bonjour,

J'ai une requête SQL assez complexe qui est lancé sur mon site Internet
chaque fois qu'un usager ouvre ma page ASP.

Je voudrais savoir ce qui est le plus performant:

- Appeler de ma page une procédure stocké

- Appeler une vue

- Créer un objet recordSet et lui passer la requête SQL et
Récupérer le résultat.


Je suis un peu mélanger entre c'est trois options... Est-ce que
Quelqu'un pourrait m'éclairer svp ?

Merci!
David
Sent using the Microsoft Entourage 2004 for Mac Test Drive.



Avatar
David Bizier
Merci!


On 16/06/04 12:00, in article OyR6#,
"Sylvain Lafontaine" <sylvain aei ca fill the blanks, no spam please> wrote:

Explications supplémentaires:

On doit préciser l'usager dbo. comme propriétaire de la procédure et des
éléments à l'interne car sinon SQL-Server doit vérifier à chaque fois s'il
n'existe pas une autre procédure ou d'autres tables avec le même nom mais
sous un nom d'usager différent; ce qui l'empêche de compiler la procédure au
complet et de mettre en cache la compilation une fois pour toute.
L'utilisation de procédures et de tables différentes ayant le même nom mais
distinguées par leurs noms d'usagers est quelque chose très très rarement
utilisé par les programmeurs mais néanmoins on doit vivre avec et, par
conséquent, toujours rajouter le préfixe dbo. afin d'accélérer les choses.

De même, on ne doit pas utiliser le préfixe sp_ ce celui-ci sert à
indiquer à SQL-Server qu'il s'agit de procédures spéciales reliées au
système, avec un ordre d'appel et de vérification différents des procédures
stockées créées par les usagers. Cela ralentit indûment le système et peut
même être la cause de certains bugs subtils dans certains cas.

Ces deux principes sont décrits dans le BOL (documentation en ligne) de
SQL-Server.

S. L.

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:
Procédure stockée avec le préfixe dbo. définit pour le nom de la SP ainsi
que pour tous les objets référencés à l'intérieur. N'utilisez pas le
préfixe sp_ au début du nom. Exemple:

Create Procedure dbo.StoredProcedure1 (...)
As
set nocount on
select * from dbo.table1
....

Si vous utilisez pratiquement toujours les mêmes paramètres d'appel à


votre
procédure stockée, cacher les résultats quelque part en mémoire pourrait
également servir.

S. L.

"David Bizier" wrote in message
news:BCF4875D.281%
Bonjour,

J'ai une requête SQL assez complexe qui est lancé sur mon site Internet
chaque fois qu'un usager ouvre ma page ASP.

Je voudrais savoir ce qui est le plus performant:

- Appeler de ma page une procédure stocké

- Appeler une vue

- Créer un objet recordSet et lui passer la requête SQL et
Récupérer le résultat.


Je suis un peu mélanger entre c'est trois options... Est-ce que
Quelqu'un pourrait m'éclairer svp ?

Merci!
David
Sent using the Microsoft Entourage 2004 for Mac Test Drive.












Sent using the Microsoft Entourage 2004 for Mac Test Drive.
Avatar
David Bizier
Si je comprend bien, DBO peut changer tout dépendant de notre login SQL
Server. Par exemple, dans mon cas, mon login c'est gg13. Donc, je
Dois mettre gg13. et non dbo.

Est-ce exacte ?

Merci!
David


On 16/06/04 12:00, in article OyR6#,
"Sylvain Lafontaine" <sylvain aei ca fill the blanks, no spam please> wrote:

Explications supplémentaires:

On doit préciser l'usager dbo. comme propriétaire de la procédure et des
éléments à l'interne car sinon SQL-Server doit vérifier à chaque fois s'il
n'existe pas une autre procédure ou d'autres tables avec le même nom mais
sous un nom d'usager différent; ce qui l'empêche de compiler la procédure au
complet et de mettre en cache la compilation une fois pour toute.
L'utilisation de procédures et de tables différentes ayant le même nom mais
distinguées par leurs noms d'usagers est quelque chose très très rarement
utilisé par les programmeurs mais néanmoins on doit vivre avec et, par
conséquent, toujours rajouter le préfixe dbo. afin d'accélérer les choses.

De même, on ne doit pas utiliser le préfixe sp_ ce celui-ci sert à
indiquer à SQL-Server qu'il s'agit de procédures spéciales reliées au
système, avec un ordre d'appel et de vérification différents des procédures
stockées créées par les usagers. Cela ralentit indûment le système et peut
même être la cause de certains bugs subtils dans certains cas.

Ces deux principes sont décrits dans le BOL (documentation en ligne) de
SQL-Server.

S. L.

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:
Procédure stockée avec le préfixe dbo. définit pour le nom de la SP ainsi
que pour tous les objets référencés à l'intérieur. N'utilisez pas le
préfixe sp_ au début du nom. Exemple:

Create Procedure dbo.StoredProcedure1 (...)
As
set nocount on
select * from dbo.table1
....

Si vous utilisez pratiquement toujours les mêmes paramètres d'appel à


votre
procédure stockée, cacher les résultats quelque part en mémoire pourrait
également servir.

S. L.

"David Bizier" wrote in message
news:BCF4875D.281%
Bonjour,

J'ai une requête SQL assez complexe qui est lancé sur mon site Internet
chaque fois qu'un usager ouvre ma page ASP.

Je voudrais savoir ce qui est le plus performant:

- Appeler de ma page une procédure stocké

- Appeler une vue

- Créer un objet recordSet et lui passer la requête SQL et
Récupérer le résultat.


Je suis un peu mélanger entre c'est trois options... Est-ce que
Quelqu'un pourrait m'éclairer svp ?

Merci!
David
Sent using the Microsoft Entourage 2004 for Mac Test Drive.












Sent using the Microsoft Entourage 2004 for Mac Test Drive.
Avatar
David Bizier
Si je comprend bien, DBO peut changer tout dépendant de notre login SQL
Server. Par exemple, dans mon cas, mon login c'est gg13. Donc, je
Dois mettre gg13. et non dbo.

Est-ce exacte ?

Merci!
David


On 16/06/04 12:00, in article OyR6#,
"Sylvain Lafontaine" <sylvain aei ca fill the blanks, no spam please> wrote:

Explications supplémentaires:

On doit préciser l'usager dbo. comme propriétaire de la procédure et des
éléments à l'interne car sinon SQL-Server doit vérifier à chaque fois s'il
n'existe pas une autre procédure ou d'autres tables avec le même nom mais
sous un nom d'usager différent; ce qui l'empêche de compiler la procédure au
complet et de mettre en cache la compilation une fois pour toute.
L'utilisation de procédures et de tables différentes ayant le même nom mais
distinguées par leurs noms d'usagers est quelque chose très très rarement
utilisé par les programmeurs mais néanmoins on doit vivre avec et, par
conséquent, toujours rajouter le préfixe dbo. afin d'accélérer les choses.

De même, on ne doit pas utiliser le préfixe sp_ ce celui-ci sert à
indiquer à SQL-Server qu'il s'agit de procédures spéciales reliées au
système, avec un ordre d'appel et de vérification différents des procédures
stockées créées par les usagers. Cela ralentit indûment le système et peut
même être la cause de certains bugs subtils dans certains cas.

Ces deux principes sont décrits dans le BOL (documentation en ligne) de
SQL-Server.

S. L.

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:
Procédure stockée avec le préfixe dbo. définit pour le nom de la SP ainsi
que pour tous les objets référencés à l'intérieur. N'utilisez pas le
préfixe sp_ au début du nom. Exemple:

Create Procedure dbo.StoredProcedure1 (...)
As
set nocount on
select * from dbo.table1
....

Si vous utilisez pratiquement toujours les mêmes paramètres d'appel à


votre
procédure stockée, cacher les résultats quelque part en mémoire pourrait
également servir.

S. L.

"David Bizier" wrote in message
news:BCF4875D.281%
Bonjour,

J'ai une requête SQL assez complexe qui est lancé sur mon site Internet
chaque fois qu'un usager ouvre ma page ASP.

Je voudrais savoir ce qui est le plus performant:

- Appeler de ma page une procédure stocké

- Appeler une vue

- Créer un objet recordSet et lui passer la requête SQL et
Récupérer le résultat.


Je suis un peu mélanger entre c'est trois options... Est-ce que
Quelqu'un pourrait m'éclairer svp ?

Merci!
David
Sent using the Microsoft Entourage 2004 for Mac Test Drive.












Sent using the Microsoft Entourage 2004 for Mac Test Drive.
Avatar
Sylvain Lafontaine
Non, vous devez mettre dbo. de préférence.

Il est possible de créer plusieurs procédures et tables ayant le même nom
mais distinctes à cause du nom de l'usager, dbo. étant pris par défaut:

dbo.procedureQuelconque (...)...

gg13.procedureQuelconque (...)...

davidbizier.procedureQuelconque (...)...

Si vous écrivez seulement procedureQuelconque () au lieu de
dbo.procedureQuelconque() lors de l'appel à la procédure, SQL-Server vérifie
d'abord s'il n'existe pas une procédure gg13.procedureQuelconque() (en
utilisant votre nom d'usager comme préfixe) avant de se rabattre sur
dbo.procedureQuelconque() en fin de compte. Cela constitue une perte de
temps et empêche le SQL-Server de maintenir en cache les procédures
compilées car il doit revérifier de nouveau à chaque appel.

Même chose pour les noms des tables mais avec un impact sur la performance
pire encore.

S. L.


"David Bizier" wrote in message
news:BCF614E2.568%
Si je comprend bien, DBO peut changer tout dépendant de notre login SQL
Server. Par exemple, dans mon cas, mon login c'est gg13. Donc, je
Dois mettre gg13. et non dbo.

Est-ce exacte ?

Merci!
David


On 16/06/04 12:00, in article OyR6#,
"Sylvain Lafontaine" <sylvain aei ca fill the blanks, no spam please>


wrote:

> Explications supplémentaires:
>
> On doit préciser l'usager dbo. comme propriétaire de la procédure et


des
> éléments à l'interne car sinon SQL-Server doit vérifier à chaque fois


s'il
> n'existe pas une autre procédure ou d'autres tables avec le même nom


mais
> sous un nom d'usager différent; ce qui l'empêche de compiler la


procédure au
> complet et de mettre en cache la compilation une fois pour toute.
> L'utilisation de procédures et de tables différentes ayant le même nom


mais
> distinguées par leurs noms d'usagers est quelque chose très très


rarement
> utilisé par les programmeurs mais néanmoins on doit vivre avec et, par
> conséquent, toujours rajouter le préfixe dbo. afin d'accélérer les


choses.
>
> De même, on ne doit pas utiliser le préfixe sp_ ce celui-ci sert à
> indiquer à SQL-Server qu'il s'agit de procédures spéciales reliées au
> système, avec un ordre d'appel et de vérification différents des


procédures
> stockées créées par les usagers. Cela ralentit indûment le système et


peut
> même être la cause de certains bugs subtils dans certains cas.
>
> Ces deux principes sont décrits dans le BOL (documentation en ligne)


de
> SQL-Server.
>
> S. L.
>
> "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
> wrote in message news:
>> Procédure stockée avec le préfixe dbo. définit pour le nom de la SP


ainsi
>> que pour tous les objets référencés à l'intérieur. N'utilisez pas le
>> préfixe sp_ au début du nom. Exemple:
>>
>> Create Procedure dbo.StoredProcedure1 (...)
>> As
>> set nocount on
>> select * from dbo.table1
>> ....
>>
>> Si vous utilisez pratiquement toujours les mêmes paramètres d'appel à
> votre
>> procédure stockée, cacher les résultats quelque part en mémoire


pourrait
>> également servir.
>>
>> S. L.
>>
>> "David Bizier" wrote in message
>> news:BCF4875D.281%
>>> Bonjour,
>>>
>>> J'ai une requête SQL assez complexe qui est lancé sur mon site


Internet
>>> chaque fois qu'un usager ouvre ma page ASP.
>>>
>>> Je voudrais savoir ce qui est le plus performant:
>>>
>>> - Appeler de ma page une procédure stocké
>>>
>>> - Appeler une vue
>>>
>>> - Créer un objet recordSet et lui passer la requête SQL et
>>> Récupérer le résultat.
>>>
>>>
>>> Je suis un peu mélanger entre c'est trois options... Est-ce que
>>> Quelqu'un pourrait m'éclairer svp ?
>>>
>>> Merci!
>>> David
>>> Sent using the Microsoft Entourage 2004 for Mac Test Drive.
>>>
>>
>>
>
>

Sent using the Microsoft Entourage 2004 for Mac Test Drive.



Avatar
David Bizier
Bonjour,

Quand j'essais dbo., j'obtiens un message d'erreur dans ma page ASP.
Par contre, si j'essais gg13. Ca marche sans problème.

Petite chose que je n'ai pas spécifié, le serveur SQL est géré par
mon hébergeur Internet. Aussi, p-t que dbo. n'est pas accessible.

Merci!
David


On 16/06/04 16:16, in article ,
"Sylvain Lafontaine" <sylvain aei ca fill the blanks, no spam please> wrote:

Non, vous devez mettre dbo. de préférence.

Il est possible de créer plusieurs procédures et tables ayant le même nom
mais distinctes à cause du nom de l'usager, dbo. étant pris par défaut:

dbo.procedureQuelconque (...)...

gg13.procedureQuelconque (...)...

davidbizier.procedureQuelconque (...)...

Si vous écrivez seulement procedureQuelconque () au lieu de
dbo.procedureQuelconque() lors de l'appel à la procédure, SQL-Server vérifie
d'abord s'il n'existe pas une procédure gg13.procedureQuelconque() (en
utilisant votre nom d'usager comme préfixe) avant de se rabattre sur
dbo.procedureQuelconque() en fin de compte. Cela constitue une perte de
temps et empêche le SQL-Server de maintenir en cache les procédures
compilées car il doit revérifier de nouveau à chaque appel.

Même chose pour les noms des tables mais avec un impact sur la performance
pire encore.

S. L.


"David Bizier" wrote in message
news:BCF614E2.568%
Si je comprend bien, DBO peut changer tout dépendant de notre login SQL
Server. Par exemple, dans mon cas, mon login c'est gg13. Donc, je
Dois mettre gg13. et non dbo.

Est-ce exacte ?

Merci!
David


On 16/06/04 12:00, in article OyR6#,
"Sylvain Lafontaine" <sylvain aei ca fill the blanks, no spam please>


wrote:

Explications supplémentaires:

On doit préciser l'usager dbo. comme propriétaire de la procédure et




des
éléments à l'interne car sinon SQL-Server doit vérifier à chaque fois




s'il
n'existe pas une autre procédure ou d'autres tables avec le même nom




mais
sous un nom d'usager différent; ce qui l'empêche de compiler la




procédure au
complet et de mettre en cache la compilation une fois pour toute.
L'utilisation de procédures et de tables différentes ayant le même nom




mais
distinguées par leurs noms d'usagers est quelque chose très très




rarement
utilisé par les programmeurs mais néanmoins on doit vivre avec et, par
conséquent, toujours rajouter le préfixe dbo. afin d'accélérer les




choses.

De même, on ne doit pas utiliser le préfixe sp_ ce celui-ci sert à
indiquer à SQL-Server qu'il s'agit de procédures spéciales reliées au
système, avec un ordre d'appel et de vérification différents des




procédures
stockées créées par les usagers. Cela ralentit indûment le système et




peut
même être la cause de certains bugs subtils dans certains cas.

Ces deux principes sont décrits dans le BOL (documentation en ligne)




de
SQL-Server.

S. L.

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:
Procédure stockée avec le préfixe dbo. définit pour le nom de la SP






ainsi
que pour tous les objets référencés à l'intérieur. N'utilisez pas le
préfixe sp_ au début du nom. Exemple:

Create Procedure dbo.StoredProcedure1 (...)
As
set nocount on
select * from dbo.table1
....

Si vous utilisez pratiquement toujours les mêmes paramètres d'appel à


votre
procédure stockée, cacher les résultats quelque part en mémoire






pourrait
également servir.

S. L.

"David Bizier" wrote in message
news:BCF4875D.281%
Bonjour,

J'ai une requête SQL assez complexe qui est lancé sur mon site








Internet
chaque fois qu'un usager ouvre ma page ASP.

Je voudrais savoir ce qui est le plus performant:

- Appeler de ma page une procédure stocké

- Appeler une vue

- Créer un objet recordSet et lui passer la requête SQL et
Récupérer le résultat.


Je suis un peu mélanger entre c'est trois options... Est-ce que
Quelqu'un pourrait m'éclairer svp ?

Merci!
David
Sent using the Microsoft Entourage 2004 for Mac Test Drive.












Sent using the Microsoft Entourage 2004 for Mac Test Drive.








Sent using the Microsoft Entourage 2004 for Mac Test Drive.
1 2