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

[WD9] accès natif SQL server

8 réponses
Avatar
Frédéric LAMBOUR
Je viens de faire de long test sur la gestion des blocages d'enregistrement
et voici mes observations

En HF : je bloque un enregistrement avec la fonction HBloqueNumEnr() : la
fonction génère une erreur de blocage si un autre utilisateur a bloqué
l'enregistrement en cours.
En accès natif SQl serveur : je bloque un enregistrement avec la fonction
HBloqueNumEnr(). la fonction ne génère pas d'erreur de blocage si un autre
utilisateur a bloqué l"enregistrement en cours. Pire il semble que je lui
"vole" son blocage.

Bon en fait la seule chose qui semble géré par l'accès natif à ce niveau
c'est si on fait un hModifie() d'un enregistrement bloqué on a bien une
erreur de blocage. Le problème c'est que contrairement à HF on ne peut pas
tester si un enregistrement est bloqué.

Quelqu'un a des infos ?

8 réponses

Avatar
Jean Cougnaud
Bonjour Fred,

En regardant l'aide de HBloqueNumEnr() on lit ça :
----------------------------------------------------------------------------------------------------------------------------------
Accès Natif SQL Server : Blocage uniquement en écriture
La fonction HBloqueNumEnr ne bloque qu'en écriture, pas en lecture. La
fonction HBloqueNumEnr empêche donc une modification de l'enregistrement par
un autre poste.
La fonction HBloqueNumEnr utilisée sur un enregistrement bloqué ne renvoie
PAS d'erreur de blocage (car seule une lecture est effectuée).
Par contre La fonctionHModifie renverra une erreur de blocage sur
l'enregistrement bloqué.
----------------------------------------------------------------------------------------------------------------------------------

Peux-tu utiliser les fonctions Sql au lieu des fonctions H... ?
SqlBloque devrait fonctionner.

Jean


"Frédéric LAMBOUR" a écrit dans le message
de news: drat58$125$
Je viens de faire de long test sur la gestion des blocages
d'enregistrement
et voici mes observations

En HF : je bloque un enregistrement avec la fonction HBloqueNumEnr() : la
fonction génère une erreur de blocage si un autre utilisateur a bloqué
l'enregistrement en cours.
En accès natif SQl serveur : je bloque un enregistrement avec la fonction
HBloqueNumEnr(). la fonction ne génère pas d'erreur de blocage si un
autre
utilisateur a bloqué l"enregistrement en cours. Pire il semble que je lui
"vole" son blocage.

Bon en fait la seule chose qui semble géré par l'accès natif à ce niveau
c'est si on fait un hModifie() d'un enregistrement bloqué on a bien une
erreur de blocage. Le problème c'est que contrairement à HF on ne peut pas
tester si un enregistrement est bloqué.

Quelqu'un a des infos ?








Avatar
Christophe Charron
Frédéric LAMBOUR a écrit :
Je viens de faire de long test sur la gestion des blocages d'enregistrement
et voici mes observations

En HF : je bloque un enregistrement avec la fonction HBloqueNumEnr() : la
fonction génère une erreur de blocage si un autre utilisateur a bloqué
l'enregistrement en cours.
En accès natif SQl serveur : je bloque un enregistrement avec la fonction
HBloqueNumEnr(). la fonction ne génère pas d'erreur de blocage si un autre
utilisateur a bloqué l"enregistrement en cours. Pire il semble que je lui
"vole" son blocage.

Bon en fait la seule chose qui semble géré par l'accès natif à ce niveau
c'est si on fait un hModifie() d'un enregistrement bloqué on a bien une
erreur de blocage. Le problème c'est que contrairement à HF on ne peut pas
tester si un enregistrement est bloqué.

Quelqu'un a des infos ?








Bonjour,
il me semble que l'on a le même comportement avec l'accès natif mysql
(tables innodb bien sûr).

--
Cordialement
Christophe Charron

PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or

Tel : 0 437 499 107
Fax : 0 437 499 105
mailto:
Avatar
Frédéric LAMBOUR
J'aimerai avoir un code commun (au maximum) entre HF et SQL (pour l'instant
ca se passe plutôt pas mal d'ailleurs)

Pour l'instant il n'y a que cette histoire de blocage qui pose problème. Je
vais rapidement trouver une parade...

Merci ...

"Jean Cougnaud" a écrit dans le message de
news:43d9dd7d$0$21349$
Bonjour Fred,

En regardant l'aide de HBloqueNumEnr() on lit ça :
--------------------------------------------------------------------------


--------------------------------------------------------
Accès Natif SQL Server : Blocage uniquement en écriture
La fonction HBloqueNumEnr ne bloque qu'en écriture, pas en lecture. La
fonction HBloqueNumEnr empêche donc une modification de l'enregistrement


par
un autre poste.
La fonction HBloqueNumEnr utilisée sur un enregistrement bloqué ne renvoie
PAS d'erreur de blocage (car seule une lecture est effectuée).
Par contre La fonctionHModifie renverra une erreur de blocage sur
l'enregistrement bloqué.
--------------------------------------------------------------------------


--------------------------------------------------------

Peux-tu utiliser les fonctions Sql au lieu des fonctions H... ?
SqlBloque devrait fonctionner.

Jean


"Frédéric LAMBOUR" a écrit dans le


message
de news: drat58$125$
> Je viens de faire de long test sur la gestion des blocages
> d'enregistrement
> et voici mes observations
>
> En HF : je bloque un enregistrement avec la fonction HBloqueNumEnr() :


la
> fonction génère une erreur de blocage si un autre utilisateur a bloqué
> l'enregistrement en cours.
> En accès natif SQl serveur : je bloque un enregistrement avec la


fonction
> HBloqueNumEnr(). la fonction ne génère pas d'erreur de blocage si un
> autre
> utilisateur a bloqué l"enregistrement en cours. Pire il semble que je


lui
> "vole" son blocage.
>
> Bon en fait la seule chose qui semble géré par l'accès natif à ce niveau
> c'est si on fait un hModifie() d'un enregistrement bloqué on a bien une
> erreur de blocage. Le problème c'est que contrairement à HF on ne peut


pas
> tester si un enregistrement est bloqué.
>
> Quelqu'un a des infos ?
>
>
>
>
>
>




Avatar
Frédéric LAMBOUR
SqlBloque() c'est uniquement pour l'accès natif. .

"Jean Cougnaud" a écrit dans le message de
news:43d9dd7d$0$21349$
Bonjour Fred,

En regardant l'aide de HBloqueNumEnr() on lit ça :
--------------------------------------------------------------------------


--------------------------------------------------------
Accès Natif SQL Server : Blocage uniquement en écriture
La fonction HBloqueNumEnr ne bloque qu'en écriture, pas en lecture. La
fonction HBloqueNumEnr empêche donc une modification de l'enregistrement


par
un autre poste.
La fonction HBloqueNumEnr utilisée sur un enregistrement bloqué ne renvoie
PAS d'erreur de blocage (car seule une lecture est effectuée).
Par contre La fonctionHModifie renverra une erreur de blocage sur
l'enregistrement bloqué.
--------------------------------------------------------------------------


--------------------------------------------------------

Peux-tu utiliser les fonctions Sql au lieu des fonctions H... ?
SqlBloque devrait fonctionner.

Jean


"Frédéric LAMBOUR" a écrit dans le


message
de news: drat58$125$
> Je viens de faire de long test sur la gestion des blocages
> d'enregistrement
> et voici mes observations
>
> En HF : je bloque un enregistrement avec la fonction HBloqueNumEnr() :


la
> fonction génère une erreur de blocage si un autre utilisateur a bloqué
> l'enregistrement en cours.
> En accès natif SQl serveur : je bloque un enregistrement avec la


fonction
> HBloqueNumEnr(). la fonction ne génère pas d'erreur de blocage si un
> autre
> utilisateur a bloqué l"enregistrement en cours. Pire il semble que je


lui
> "vole" son blocage.
>
> Bon en fait la seule chose qui semble géré par l'accès natif à ce niveau
> c'est si on fait un hModifie() d'un enregistrement bloqué on a bien une
> erreur de blocage. Le problème c'est que contrairement à HF on ne peut


pas
> tester si un enregistrement est bloqué.
>
> Quelqu'un a des infos ?
>
>
>
>
>
>




Avatar
Jean Cougnaud
Oui.
Comme j'ai vu dans ton message que ton test avait justement été fait avec
l'accès natif SqlServeur je pensais que tu pouvais l'utiliser.

Je crois qu'utiliser les fonctions H... sur autre chose que de l'Hyperfile
doit avoir des limites.

Jean

"Frédéric LAMBOUR" a écrit dans le message
de news: drcu6d$5ti$
SqlBloque() c'est uniquement pour l'accès natif. .

"Jean Cougnaud" a écrit dans le message de
news:43d9dd7d$0$21349$
Bonjour Fred,

En regardant l'aide de HBloqueNumEnr() on lit ça :
--------------------------------------------------------------------------


--------------------------------------------------------
Accès Natif SQL Server : Blocage uniquement en écriture
La fonction HBloqueNumEnr ne bloque qu'en écriture, pas en lecture. La
fonction HBloqueNumEnr empêche donc une modification de l'enregistrement


par
un autre poste.
La fonction HBloqueNumEnr utilisée sur un enregistrement bloqué ne
renvoie
PAS d'erreur de blocage (car seule une lecture est effectuée).
Par contre La fonctionHModifie renverra une erreur de blocage sur
l'enregistrement bloqué.
--------------------------------------------------------------------------


--------------------------------------------------------

Peux-tu utiliser les fonctions Sql au lieu des fonctions H... ?
SqlBloque devrait fonctionner.

Jean


"Frédéric LAMBOUR" a écrit dans le


message
de news: drat58$125$
> Je viens de faire de long test sur la gestion des blocages
> d'enregistrement
> et voici mes observations
>
> En HF : je bloque un enregistrement avec la fonction HBloqueNumEnr() :


la
> fonction génère une erreur de blocage si un autre utilisateur a bloqué
> l'enregistrement en cours.
> En accès natif SQl serveur : je bloque un enregistrement avec la


fonction
> HBloqueNumEnr(). la fonction ne génère pas d'erreur de blocage si un
> autre
> utilisateur a bloqué l"enregistrement en cours. Pire il semble que je


lui
> "vole" son blocage.
>
> Bon en fait la seule chose qui semble géré par l'accès natif à ce
> niveau
> c'est si on fait un hModifie() d'un enregistrement bloqué on a bien une
> erreur de blocage. Le problème c'est que contrairement à HF on ne peut


pas
> tester si un enregistrement est bloqué.
>
> Quelqu'un a des infos ?
>
>
>
>
>
>








Avatar
Frédéric LAMBOUR
Entièrement d'accord.


"Jean Cougnaud" a écrit dans le message de
news:43d9fce2$0$21363$
Oui.
Comme j'ai vu dans ton message que ton test avait justement été fait avec
l'accès natif SqlServeur je pensais que tu pouvais l'utiliser.

Je crois qu'utiliser les fonctions H... sur autre chose que de l'Hyperfile
doit avoir des limites.

Jean

"Frédéric LAMBOUR" a écrit dans le


message
de news: drcu6d$5ti$
> SqlBloque() c'est uniquement pour l'accès natif. .
>
> "Jean Cougnaud" a écrit dans le message


de
> news:43d9dd7d$0$21349$
>> Bonjour Fred,
>>
>> En regardant l'aide de HBloqueNumEnr() on lit ça :

-------------------------------------------------------------------------




-
> --------------------------------------------------------
>> Accès Natif SQL Server : Blocage uniquement en écriture
>> La fonction HBloqueNumEnr ne bloque qu'en écriture, pas en lecture. La
>> fonction HBloqueNumEnr empêche donc une modification de


l'enregistrement
> par
>> un autre poste.
>> La fonction HBloqueNumEnr utilisée sur un enregistrement bloqué ne
>> renvoie
>> PAS d'erreur de blocage (car seule une lecture est effectuée).
>> Par contre La fonctionHModifie renverra une erreur de blocage sur
>> l'enregistrement bloqué.

-------------------------------------------------------------------------




-
> --------------------------------------------------------
>>
>> Peux-tu utiliser les fonctions Sql au lieu des fonctions H... ?
>> SqlBloque devrait fonctionner.
>>
>> Jean
>>
>>
>> "Frédéric LAMBOUR" a écrit dans le
> message
>> de news: drat58$125$
>> > Je viens de faire de long test sur la gestion des blocages
>> > d'enregistrement
>> > et voici mes observations
>> >
>> > En HF : je bloque un enregistrement avec la fonction HBloqueNumEnr()


:
> la
>> > fonction génère une erreur de blocage si un autre utilisateur a


bloqué
>> > l'enregistrement en cours.
>> > En accès natif SQl serveur : je bloque un enregistrement avec la
> fonction
>> > HBloqueNumEnr(). la fonction ne génère pas d'erreur de blocage si un
>> > autre
>> > utilisateur a bloqué l"enregistrement en cours. Pire il semble que je
> lui
>> > "vole" son blocage.
>> >
>> > Bon en fait la seule chose qui semble géré par l'accès natif à ce
>> > niveau
>> > c'est si on fait un hModifie() d'un enregistrement bloqué on a bien


une
>> > erreur de blocage. Le problème c'est que contrairement à HF on ne


peut
> pas
>> > tester si un enregistrement est bloqué.
>> >
>> > Quelqu'un a des infos ?
>> >
>> >
>> >
>> >
>> >
>> >
>>
>>
>
>




Avatar
Firetox
Bonjour,

Nous travaillons depuis 3 semaines sur un accés natif pour SQLServer (qui
sera OPEN-SOURCE). Votre remarque concernant le blocage de ligne nous a
particulièrement interpellée nous nous sommes penche donc sur le probleme

Nous en sommes arrivé au point suivant : Si nous faisons un select avec un
lock de premier niveau, seules les modifications par d'autres utilisateurs
sont bloquées (donc pas les sélections). Si nous faison un lock un peu plus
"lourd", les sélections des autres utilisateurs sont bloquées (avec le time
out par défaut). Nous regardons actuellement comment modifier ce timeout à
disposition du développeur au moment du lock.

Nonc pouvons donc supposer que le lock à la ligne est envisageable au niveau
du select (ou SQLLitBloque pour SQLManagerX) et non au niveau de la
modification (au pire par une modification d'un paramètre serveur). Nous
finalisons nos tests et une version opérationnelle devrait voir le jour
rapidement.

Pour la petite histoire, nous avons deux utilisateurs qui nous ont demandé
d'étudier un acccés natif SQLServer pour SQLManagerX en début d'année. C'est
donc avec interêt que nous nous sommes penché sur vos remarques. Pourquoi
cette remarque ? Tout simplement pour vous dire de ne pas hésiter à nous
remonter vos demandes pour faire avancer les accès [alter]natifs, nous
sommes parfaitement ouverts à toutes remarques.

L'accès SQLServer est entièrement compatible SQLManagerX (il est
actuellement en validation de niveau 2) et gère les blobs d'une façon
remarquable, quel plaisir de voir ces images sur l'écran avec une
progammation hyper simple et de voir que l'insert et l'update le font
egalement :-), images provenant de Acces ou SQLServer sans aucune
modification de son code !

Venez visiter www.SQLManagerX.com, vous aurez parfois des réponses à vos
questions.

bon dev
@+
"Jean Cougnaud" a écrit dans le message de
news: 43d9fce2$0$21363$
Oui.
Comme j'ai vu dans ton message que ton test avait justement été fait avec
l'accès natif SqlServeur je pensais que tu pouvais l'utiliser.

Je crois qu'utiliser les fonctions H... sur autre chose que de l'Hyperfile
doit avoir des limites.

Jean

"Frédéric LAMBOUR" a écrit dans le
message de news: drcu6d$5ti$
SqlBloque() c'est uniquement pour l'accès natif. .

"Jean Cougnaud" a écrit dans le message de
news:43d9dd7d$0$21349$
Bonjour Fred,

En regardant l'aide de HBloqueNumEnr() on lit ça :
--------------------------------------------------------------------------


--------------------------------------------------------
Accès Natif SQL Server : Blocage uniquement en écriture
La fonction HBloqueNumEnr ne bloque qu'en écriture, pas en lecture. La
fonction HBloqueNumEnr empêche donc une modification de l'enregistrement


par
un autre poste.
La fonction HBloqueNumEnr utilisée sur un enregistrement bloqué ne
renvoie
PAS d'erreur de blocage (car seule une lecture est effectuée).
Par contre La fonctionHModifie renverra une erreur de blocage sur
l'enregistrement bloqué.
--------------------------------------------------------------------------


--------------------------------------------------------

Peux-tu utiliser les fonctions Sql au lieu des fonctions H... ?
SqlBloque devrait fonctionner.

Jean


"Frédéric LAMBOUR" a écrit dans le


message
de news: drat58$125$
> Je viens de faire de long test sur la gestion des blocages
> d'enregistrement
> et voici mes observations
>
> En HF : je bloque un enregistrement avec la fonction HBloqueNumEnr() :


la
> fonction génère une erreur de blocage si un autre utilisateur a bloqué
> l'enregistrement en cours.
> En accès natif SQl serveur : je bloque un enregistrement avec la


fonction
> HBloqueNumEnr(). la fonction ne génère pas d'erreur de blocage si un
> autre
> utilisateur a bloqué l"enregistrement en cours. Pire il semble que je


lui
> "vole" son blocage.
>
> Bon en fait la seule chose qui semble géré par l'accès natif à ce
> niveau
> c'est si on fait un hModifie() d'un enregistrement bloqué on a bien
> une
> erreur de blocage. Le problème c'est que contrairement à HF on ne peut


pas
> tester si un enregistrement est bloqué.
>
> Quelqu'un a des infos ?
>
>
>
>
>
>












Avatar
Frédéric LAMBOUR
Merci pour cette réponse très détaillé :)

"Firetox" a écrit dans le message de
news:43da402f$0$21352$
Bonjour,

Nous travaillons depuis 3 semaines sur un accés natif pour SQLServer (qui
sera OPEN-SOURCE). Votre remarque concernant le blocage de ligne nous a
particulièrement interpellée nous nous sommes penche donc sur le probleme

Nous en sommes arrivé au point suivant : Si nous faisons un select avec un
lock de premier niveau, seules les modifications par d'autres utilisateurs
sont bloquées (donc pas les sélections). Si nous faison un lock un peu


plus
"lourd", les sélections des autres utilisateurs sont bloquées (avec le


time
out par défaut). Nous regardons actuellement comment modifier ce timeout à
disposition du développeur au moment du lock.

Nonc pouvons donc supposer que le lock à la ligne est envisageable au


niveau
du select (ou SQLLitBloque pour SQLManagerX) et non au niveau de la
modification (au pire par une modification d'un paramètre serveur). Nous
finalisons nos tests et une version opérationnelle devrait voir le jour
rapidement.

Pour la petite histoire, nous avons deux utilisateurs qui nous ont demandé
d'étudier un acccés natif SQLServer pour SQLManagerX en début d'année.


C'est
donc avec interêt que nous nous sommes penché sur vos remarques. Pourquoi
cette remarque ? Tout simplement pour vous dire de ne pas hésiter à nous
remonter vos demandes pour faire avancer les accès [alter]natifs, nous
sommes parfaitement ouverts à toutes remarques.

L'accès SQLServer est entièrement compatible SQLManagerX (il est
actuellement en validation de niveau 2) et gère les blobs d'une façon
remarquable, quel plaisir de voir ces images sur l'écran avec une
progammation hyper simple et de voir que l'insert et l'update le font
egalement :-), images provenant de Acces ou SQLServer sans aucune
modification de son code !

Venez visiter www.SQLManagerX.com, vous aurez parfois des réponses à vos
questions.

bon dev
@+
"Jean Cougnaud" a écrit dans le message de
news: 43d9fce2$0$21363$
> Oui.
> Comme j'ai vu dans ton message que ton test avait justement été fait


avec
> l'accès natif SqlServeur je pensais que tu pouvais l'utiliser.
>
> Je crois qu'utiliser les fonctions H... sur autre chose que de


l'Hyperfile
> doit avoir des limites.
>
> Jean
>
> "Frédéric LAMBOUR" a écrit dans le
> message de news: drcu6d$5ti$
>> SqlBloque() c'est uniquement pour l'accès natif. .
>>
>> "Jean Cougnaud" a écrit dans le message


de
>> news:43d9dd7d$0$21349$
>>> Bonjour Fred,
>>>
>>> En regardant l'aide de HBloqueNumEnr() on lit ça :

------------------------------------------------------------------------






--
>> --------------------------------------------------------
>>> Accès Natif SQL Server : Blocage uniquement en écriture
>>> La fonction HBloqueNumEnr ne bloque qu'en écriture, pas en lecture. La
>>> fonction HBloqueNumEnr empêche donc une modification de


l'enregistrement
>> par
>>> un autre poste.
>>> La fonction HBloqueNumEnr utilisée sur un enregistrement bloqué ne
>>> renvoie
>>> PAS d'erreur de blocage (car seule une lecture est effectuée).
>>> Par contre La fonctionHModifie renverra une erreur de blocage sur
>>> l'enregistrement bloqué.

------------------------------------------------------------------------






--
>> --------------------------------------------------------
>>>
>>> Peux-tu utiliser les fonctions Sql au lieu des fonctions H... ?
>>> SqlBloque devrait fonctionner.
>>>
>>> Jean
>>>
>>>
>>> "Frédéric LAMBOUR" a écrit dans le
>> message
>>> de news: drat58$125$
>>> > Je viens de faire de long test sur la gestion des blocages
>>> > d'enregistrement
>>> > et voici mes observations
>>> >
>>> > En HF : je bloque un enregistrement avec la fonction HBloqueNumEnr()


:
>> la
>>> > fonction génère une erreur de blocage si un autre utilisateur a


bloqué
>>> > l'enregistrement en cours.
>>> > En accès natif SQl serveur : je bloque un enregistrement avec la
>> fonction
>>> > HBloqueNumEnr(). la fonction ne génère pas d'erreur de blocage si


un
>>> > autre
>>> > utilisateur a bloqué l"enregistrement en cours. Pire il semble que


je
>> lui
>>> > "vole" son blocage.
>>> >
>>> > Bon en fait la seule chose qui semble géré par l'accès natif à ce
>>> > niveau
>>> > c'est si on fait un hModifie() d'un enregistrement bloqué on a bien
>>> > une
>>> > erreur de blocage. Le problème c'est que contrairement à HF on ne


peut
>> pas
>>> > tester si un enregistrement est bloqué.
>>> >
>>> > Quelqu'un a des infos ?
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>>
>>>
>>
>>
>
>