Dans SQL Server 2008, j'utilise des déclencheurs pour capturer toutes les modifications apportées à une table spécifique dans ma base de données. Mon but est de capturer le changement entier. C'est-à-dire, pour capturer quelles données sont insérées, pas simplement que les données sont insérées. Dans le déclencheur, j'utilise la colonne EventInfo du jeu de résultats renvoyé par DBCC INPUTBUFFER pour obtenir l'instruction SQL en cours d'exécution ainsi que la colonne Parameters pour obtenir le nombre de paramètres utilisés. Cela fonctionne dans la plupart des cas, mais lorsqu'une application externe exécute une requête à l'aide d'ADO.NET ou que des lignes sont insérées/supprimées à l'aide de l'option Modifier les 200 lignes supérieures dans SSMS, EventInfo n'a pas de valeur de paramètre.Les requêtes paramétrables peuvent-elles être entièrement capturées à l'aide de DBCC INPUTBUFFER?
Par exemple, si une chaîne de requête est exécutée dans une fenêtre de requête ou une requête de chaîne non paramétrée dans ADO.NET, EventInfo montre:
INSERT INTO DTS_TABLE ([ID] ,[DTS_ID] ,[DTS] ,[TICS]) VALUES (10, 9, GETDATE(), 91234)
Lors de l'insertion des mêmes données en utilisant Modifier les 200 lignes ou une requête dans ADO.NET paramétrisé, montre EventInfo (de nouvelles lignes ajouté pour une meilleure lisibilité):
(@id int,@dtsid int,@dts datetime,@tics int)
INSERT INTO DTS_TABLE ([ID] ,[DTS_ID] ,[DTS] ,[TICS])
VALUES (@id, @dtsid, @dts, @tics)
y at-il de toute façon d'accéder aux valeurs des paramètres dans le contexte de mon déclencheur?
J'ai le même problème et voici ma raison de chercher une réponse: Je dois tuer une opération 'insertion' qui bloque près de 250 sélections. Avant de le tuer, je veux savoir quelles données seront perdues. – KSK
Serait bon d'obtenir les paremètres si quelqu'un sait comment – davey