Audit d'accès à des vues, procédures et OPENQUERY
Bonjour,
J'aimerais mettre en place un audit d'accès à des données d'un serveur SQL Server 2012. Mon besoin et qu'une table soit remplie d'une ligne d'audit à chaque fois qu'un utilisateur exécute une vue.
Je tente de passer par une procédure stockée qui contient le SELECT de la vue ainsi qu'un INSERT dans la table d'audit. Je bloque à créer la vue qui exécute cette procédure stockée.
J'ai trouvé la source de l'erreur je suppose sur ce site. L'OPENQUERY semble faire un rollback.
Ci-dessous un code de test, [SELF] est un serveur lié qui pointe sur localhost. La première exécution insert bien une ligne dans la table d'audit mais pas quand je l'appelle par OPENQUERY. J'ai aussi essayé OPENROWSET, Utiliser OLEDB en place du client natif, ... rien n'y fait. Je suis prenneur si vous avez des idées.
Merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
create table dbo.stored_procedure_log (
sp_schema varchar(255),
sp_name varchar(255),
sp_user varchar(255),
start_time datetime,
duration int default 0
);
go
create procedure sp_dummy
as
begin
select 1 as col1, 2 as col2;
insert into dbo.stored_procedure_log(sp_schema,sp_name,sp_user,start_time)
values ('dbo','dummy','toto',getdate());
end;
go
exec sp_dummy;
-- On vérifie qu'une ligne d'audit a bien été mise
select * from dbo.stored_procedure_log;
select * from OPENQUERY([SELF], '
exec master.dbo.sp_dummy;
');
-- La ligne d'audit n'a pas été insérée
select * from dbo.stored_procedure_log; |