SQL Server - Ligne 100 - Trace utilisateur

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

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

SQL Server - Ligne 100 - Trace utilisateur

de OokieDookie » Lun 10 Déc 2012 12:57

Bonjour à tous,

Du nouveau sur le forum, bishr nous a enfin trouvé comment récupérer le user Sage d'une session.
Ca valait bien un gros coup de pub et une publication dans la section savoir-faire !

Bonne journée
"L'expérience est le nom que chacun donne à ses erreurs." (O. Wilde)
Qualité et précision de la question conditionnent celles de la réponse. :roll:
Et si on gagnait TOUS du temps ? Menu "?", A propos de :wink:
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 1481
Inscription: Jeu 14 Fév 2008 13:50
Localisation: Paris

Re: SQL Server - Ligne 100 - Trace utilisateur

de bishr » Lun 10 Déc 2012 18:50

Bonjour ...

Pas de souci ... Il faut publier ...
Si d'autres questions ... ne pas hésiter ...

J'ai plein de procédure sous le coude !!

Bonne journée ...
Soyez réalistes : demandez l'impossible
Avatar de l’utilisateur
Contributeur
Contributeur
 
Messages: 96
Inscription: Dim 27 Mai 2007 23:55
Localisation: Ici ... et là ...

Re: SQL Server - Ligne 100 - Trace utilisateur

de asr31 » Ven 4 Jan 2013 22:44

Bonjour,

@BISHR : bien vu, on attend tous les autres procédures !!!!
@OokieDookie : merci pour le 'UP' sur ce message.

Cdt,
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

Re: SQL Server - Ligne 100 - Trace utilisateur

de rachcompte » Mer 9 Oct 2013 13:35

Code: Tout sélectionner
--Table permettant de stocker les connexions
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TraceUserSession]') AND type in (N'U'))
DROP TABLE [dbo].[TraceUserSession]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TraceUserSession](
[spid] [int] NULL,
[UserSage100] [nvarchar](max) NULL,
[UserWindows] [nvarchar](max) NULL,
[TypeCnx] [nchar](10) NULL,
[CreatorCnx] [nchar](10) NULL
) ON [PRIMARY]
GO
--Trigger permettant d'alimenter la table "TraceUserSession" avec les nouvelles connexions
IF EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[TRC_CIAL_USERSESSION]'))
DROP TRIGGER [dbo].[TRC_CIAL_USERSESSION]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[TRC_CIAL_USERSESSION]
ON [dbo].[F_PROTECTIONCIAL]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
Declare @marqueur smallint, @userSage100 varchar(max), @userWindows varchar(max)
Declare @typeCnx varchar(max), @creatorCnx varchar(max)

If (Select count(*) From TraceUserSession Where spid=@@spid)=0
Begin
Select @marqueur = cbMarq From Inserted
Select @userSage100 = PROT_USER From F_PROTECTIONCIAL Where CbMarq = @marqueur
Select @userWindows=RTrim(nt_domain) + '\' + RTrim(nt_username) From sys.sysprocesses Where spid=@@spid
Select @typeCnx=CB_Type, @creatorCnx=CB_Creator from cbUserSession Where cbSession=@@spid
Insert Into TraceUserSession(spid, UserSage100, UserWindows, TypeCnx, CreatorCnx)
Values(@@spid,@userSage100,@userWindows,@typeCnx,@creatorCnx)
End
END
GO
Dernière édition par rachcompte le Mer 9 Oct 2013 13:36, édité 1 fois.
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: Lun 28 Mai 2012 11:51

Re: SQL Server - Ligne 100 - Trace utilisateur

de rachcompte » Mer 9 Oct 2013 13:36

Code: Tout sélectionner
--Table permettant de stocker les connexions
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TraceUserSession]') AND type in (N'U'))
DROP TABLE [dbo].[TraceUserSession]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TraceUserSession](
[spid] [int] NULL,
[UserSage100] [nvarchar](max) NULL,
[UserWindows] [nvarchar](max) NULL,
[TypeCnx] [nchar](10) NULL,
[CreatorCnx] [nchar](10) NULL
) ON [PRIMARY]
GO
--Trigger permettant d'alimenter la table "TraceUserSession" avec les nouvelles connexions
IF EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[TRC_CIAL_USERSESSION]'))
DROP TRIGGER [dbo].[TRC_CIAL_USERSESSION]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[TRC_CIAL_USERSESSION]
ON [dbo].[F_PROTECTIONCIAL]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
Declare @marqueur smallint, @userSage100 varchar(max), @userWindows varchar(max)
Declare @typeCnx varchar(max), @creatorCnx varchar(max)

If (Select count(*) From TraceUserSession Where spid=@@spid)=0
Begin
Select @marqueur = cbMarq From Inserted
Select @userSage100 = PROT_USER From F_PROTECTIONCIAL Where CbMarq = @marqueur
Select @userWindows=RTrim(nt_domain) + '\' + RTrim(nt_username) From sys.sysprocesses Where spid=@@spid
Select @typeCnx=CB_Type, @creatorCnx=CB_Creator from cbUserSession Where cbSession=@@spid
Insert Into TraceUserSession(spid, UserSage100, UserWindows, TypeCnx, CreatorCnx)
Values(@@spid,@userSage100,@userWindows,@typeCnx,@creatorCnx)
End
END
GO
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: Lun 28 Mai 2012 11:51

Re: SQL Server - Ligne 100 - Trace utilisateur

de kervb » Mer 15 Jan 2014 08:46

Bonjour,

Merci bishr pour le script. Ca marche :)

J'ai essayer de l'utiliser avec des triggers sur f_docentete et f_docligne pour savoir qui a modifie les documents. Mais le souci c'est que sur la meme session windows, deux utilisateurs sage peut se connecter. Dans ce cas le spid des deux utilisateurs sage sera le meme! Donc difficile de tracer lequel des deux a fait des modifications.

Quelqu'un a une idee comment contourner ce probleme?

Merci pour votre contribution.
kervb




OokieDookie a écrit:Bonjour à tous,

Du nouveau sur le forum, bishr nous a enfin trouvé comment récupérer le user Sage d'une session.
Ca valait bien un gros coup de pub et une publication dans la section savoir-faire !

Bonne journée
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: Ven 21 Oct 2011 14:39

Re: SQL Server - Ligne 100 - Trace utilisateur

de asr31 » Mer 2 Avr 2014 23:04

Bonjour,

Je ne pense pas que le SPID soit le même ....

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

Re: SQL Server - Ligne 100 - Trace utilisateur

de Proto » Sam 16 Mai 2015 16:35

Pour avoir utilisé le même type de script, il suffit à la connexion de faire un lien entre l'utilisateur SYSTEM du sql avec l'identifiant de connexion Sage.
Après, il suffit de faire appel à cette table dans les triggers sur UPDATE/INSERT/DELETE por F_DOCENTETE et F_DOCLIGNE.
De là à savoir qui est derrière le clavier .... à part la vidéo :D
Cordialement
Posteur néophyte
Posteur néophyte
 
Messages: 5
Inscription: Ven 15 Mai 2015 15:58

Re: SQL Server - Ligne 100 - Trace utilisateur

de ririandri » Ven 19 Fév 2016 15:07

Ce script est effectivement fort utile pour connaître l'utilisateur SAGE et peut être amélioré en supprimant de la table les informations inutiles concernant les anciennes sessions. D'autre part, ne serait-il pas moins compliqué d'utiliser le champ cbSession de la table cbUserSession pour identifier l'utilisateur SAGE ?
En tout cas merci pour tout !
Posteur néophyte
Posteur néophyte
 
Messages: 1
Inscription: Sam 5 Nov 2011 17:51

Re: SQL Server - Ligne 100 - Trace utilisateur

de NARBONE » Mer 20 Avr 2016 10:27

Bonjour,
je réponds suite à la consultation de ce sujet, car j'aurais une question annexe sur le même thème :
est-ce qu'on peut retracer dans SQL SERVER 2008 et + le traitement des reports à nouveau ainsi que le temps de traitement de la comptabilité SAGE gérée sous SQL SERVER ?
- version SQL SERVER : 2008 R2 et +
- version comptabilité SAGE : 16 et +
merci d'avance pour vos retours
cordialement,
M. NARBONE
Posteur néophyte
Posteur néophyte
 
Messages: 18
Inscription: Lun 6 Jan 2014 13:30

Re: SQL Server - Ligne 100 - Trace utilisateur

de asr31 » Jeu 21 Avr 2016 00:56

@Narbonne,

Bonjour :
Aucun rapport avec le choucroute à mon avis...

Plutôt ouvrir un nouveau POST pour ta demande.

Sinon, Il est toujours possible, coté SQL, de faire une trace de ce qui se passe (voir SQL Profiler)

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é