Element en cours d'utilisation

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

Element en cours d'utilisation

de silvia » Lun 20 Fév 2012 18:33

Bonjour,

SAGE SQL Server - 16.05

- Es-t'il possible via une requête SQL de connaitre qu'elle est le nom du poste "Windows" qui est sur un document (Bon de Commande), lorsque l’élément est en cours d'utilisation.

Autre question :
- Il y a t'il un moyen de bloquer/débloqué un document (élément en cours d'utilisation sur SAGE) via des requêtes SQL.
J'essaye avec :
EXEC CB_UnLockRecord 'F_DOCENTETE' , 4, NumEnregistrement
EXEC CB_LockRecord 'F_DOCENTETE' , 4, NumEnregistrement

mais ce n'est pas terrible, pas d'id de connexion, du coup si l'application plante avant le déblocage, le document est bloqué est impossible de le débloqué (sauf en arrêtant le service). Et en plus quand l’élément est bloqué, on peut plus le modifier même avec la connexion qui a bloqué le document.... un peu balo... ^^

Merci d'avance.
Posteur actif
Posteur actif
 
Messages: 35
Inscription: Jeu 26 Juin 2008 17:16
Localisation: RODEZ

Re: Element en cours d'utilisation

de IMPERIAL » Mar 21 Fév 2012 14:38

Bonjour,

Pour déloquer des enregistrements:

DBCC CBSQLXP(FREE)

Cdlt
IMPERIAL
Consultant Ligne 100 - INFOROPE
Le savoir c'est comme l'Amour. Si tu ne le partage pas, il devient inutile.

IMPERIAL
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 4661
Inscription: Jeu 6 Aoû 2009 12:39
Localisation: ROSNY SOUS BOIS

Re: Element en cours d'utilisation

de nizarbraham » Jeu 1 Mar 2012 11:01

Code: Tout sélectionner
USE [VOTRE BASE]
DECLARE @LOCK int
DECLARE @lBase int
DECLARE @lTable int
DECLARE @lRes int
DECLARE @ress int
DECLARE @spid int
DECLARE @sp int

DECLARE MyCursor CURSOR FOR
SELECT cbMarq FROM F_DOCENTETE where DO_Piece='[b]BCXXX [/b]' -- BCXXX = NUMERO DE PIECE (numero du document)
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @ress

set @spid = 0

WHILE @spid < 200 -- on considère que 200 est un gros chiffre mais vous pouvez le mettre plus haut
BEGIN
set @spid=@spid+1
SET NOCOUNT ON
SELECT @lBase = DB_ID()
SELECT @lTable = OBJECT_ID('F_DOCENTETE')
EXECUTE @lRes = master..xp_CBUnLockRecord @spid,@lBase,@lTable, 3,@ress -- essaye de débloquer le document du processus
IF @lRes <> 0
RAISERROR(@lRes,11,1) WITH SETERROR

exec CB_IsRecordLock 'F_DOCENTETE', @ress, @LOCK OUTPUT -- test si le document est toujours bloqué
print @LOCK -- renvoi 1 si bloqué et 0 pour debloqué
print @spid
END

CLOSE myCursor
DEALLOCATE myCursor
Avatar de l’utilisateur
Posteur néophyte
Posteur néophyte
 
Messages: 18
Inscription: Mer 28 Oct 2009 19:50

Re: Element en cours d'utilisation

de jonathanbibou » Mer 7 Mar 2012 21:40

ça donne quoi comme réponse votre derniere requete?
Super Contributeur
Super Contributeur
 
Messages: 150
Inscription: Mer 1 Sep 2010 08:31

Re: Element en cours d'utilisation

de benjo » Jeu 8 Mar 2012 10:21

Bonjour,

Comme le dit IMPERIAL

IMPERIAL a écrit:Bonjour,

Pour déloquer des enregistrements:

DBCC CBSQLXP(FREE)

Cdlt


Il faut bien penser a déconnecter les autres utilisateurs

Cdlt

Benjo
Group IT Project Manager


Le savoir que l'on ne complète pas chaque jour diminue tous les jours.
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 1527
Inscription: Mar 1 Juin 2010 12:10
Localisation: Levallois Perret

Re: Element en cours d'utilisation

de Dimitrak » Ven 22 Mar 2013 18:07

nizarbraham a écrit:
Code: Tout sélectionner
USE [VOTRE BASE]
DECLARE @LOCK int
DECLARE @lBase int
DECLARE @lTable int
DECLARE @lRes int
DECLARE @ress int
DECLARE @spid int
DECLARE @sp int

DECLARE MyCursor CURSOR FOR
SELECT cbMarq FROM F_DOCENTETE where DO_Piece='[b]BCXXX [/b]' -- BCXXX = NUMERO DE PIECE (numero du document)
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @ress

set @spid = 0

WHILE @spid < 200 -- on considère que 200 est un gros chiffre mais vous pouvez le mettre plus haut
BEGIN
set @spid=@spid+1
SET NOCOUNT ON
SELECT @lBase = DB_ID()
SELECT @lTable = OBJECT_ID('F_DOCENTETE')
EXECUTE @lRes = master..xp_CBUnLockRecord @spid,@lBase,@lTable, 3,@ress -- essaye de débloquer le document du processus
IF @lRes <> 0
RAISERROR(@lRes,11,1) WITH SETERROR

exec CB_IsRecordLock 'F_DOCENTETE', @ress, @LOCK OUTPUT -- test si le document est toujours bloqué
print @LOCK -- renvoi 1 si bloqué et 0 pour debloqué
print @spid
END

CLOSE myCursor
DEALLOCATE myCursor


Bonjour, nous rencontrons le problème chez un client, que permet cette requête et peut-on la lancer ans risque ?

Cordialement,

Dimitrak
Posteur habitué
Posteur habitué
 
Messages: 32
Inscription: Mar 29 Sep 2009 16:01

Re: Element en cours d'utilisation

de asr31 » Jeu 25 Avr 2013 22:14

Bonjour,

Avant de passer aux armes lourdes, faudrait pouvoir se poser la question du 'pourquoi' un lock est posé et s'il a une bonne raison ou non d'être là, non ?

Dans les cas que j'ai pu constater, même sur des configs à plus de 25 users, les locks sont généralement justifiés :
* opération d'import en compta
* article ou tiers ou journal en cours de modif

Le plus casse-pied, c'est le plantage d'un poste en cours de modif.
- Il me semble que si l'utilisateur qui a planté se reconnecte, les locks posés sur son process sont effacés (mais pas sûr)
- Si plantage en cours de saisie, on est sensé faire sortir tout le monde et vérifier son dossier pas la maintenance (pièce déséquilibrée, incohérence, etc.)

Cordialement,
ASR31

En recherche de missions.
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 2975
Inscription: Mer 13 Fév 2008 15:31
Localisation: TOULOUSE


Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité