Ich versuche eine generische Protokollierung für meine gespeicherten Prozeduren zu implementieren. Die beste Lösung, die ich gefunden habe, ist DBCC INPUTBUFFER zu verwenden, es gibt den Text des Prozeduraufrufs wie folgt zurück:
%Vor%Aber es hat eine Einschränkung, die maximale Länge dieses Puffers ist 4000. Ich habe viele Prozeduren, die Tabellenwerte haben und oft enthalten sie & gt; 10000 Datensätze, so kann ich diesen Aufruf mit diesem Ansatz nicht protokollieren.
Gibt es eine Möglichkeit, eine solche Protokollierung ohne manuelles Erstellen von 'Text of procedure call' in jeder Prozedur zu implementieren?
Anstatt DBCC INPUTBUFFER @SPID
zu verwenden, können Sie versuchen, dm_exec_sql_text
Es hat ein nvarchar(max)
-Feld als Text
des letzten SP.
Versuchen Sie, eine Funktion für diesen Code zu erstellen (erwarten Sie den Parameter @SPID
als int):
Eine andere Art zu verwenden:
%Vor% Anstelle des Parameters @SPID
können Sie @@SPID
verwenden, aber dieses Codesegment wird in Ihren letzten SP-Aufruf integriert.
Tags und Links sql-server logging stored-procedures tsql