Ich möchte wissen, welche SQL-Anweisung an den Server von meinem ado.net basierte Anwendung für die Protokollierung von Ausnahmen und Debugging gesendet. Ich benutze generische DAL, die MS SQL-Verbindungsanbieter handhaben.Was SQL-Anweisung an den Server von Ado.net-Anwendung (MS SQL-Provider) gesendet
fand ich diese Abfrage während SO suchen:
SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC
Referenz: SQL Server Query Trace
und viele andere in SO
Dieser Code SQL-Abfragen können fangen, wenn sie aus SSMS ausgeführt werden (SQL Server Management Studio)
aber kann keine Abfragen, wenn sie von meiner Ado.net-Anwendung mit MS sql d verbunden gesendet werden Atabase-Server.
Meine Frage:
Warum ich keine Abfragen fangen können, wenn sie von Ado.net basierte Anwendung mit diesem Code gesendet werden?
Gibt es andere Art und Weise (SQL-Code/C# -Code) die tatsächlichen SQL-Anweisungen aus meiner Anwendung geschickt zu fangen (wie das, was ich in SQL PROFI bekommen)
Die Abfrage eine Abfrage finden, die zwischengespeichert wird, unabhängig davon, wie ausgeführt. Daher wird die Abfrage möglicherweise nicht zwischengespeichert oder gelöscht, bevor die DMV-Abfrage ausgeführt wurde. Verwenden Sie zu diesem Zweck keine DMVs, sondern eine Ablaufverfolgung mit erweiterten Ereignissen oder SQL-Ablaufverfolgung (Profiler). –
SQL Profiler benötigen Online-Interaktion, ich brauche etwas Code für die Protokollierung –
Sie können die Ablaufverfolgung aus dem Profiler für die unbeaufsichtigte serverseitige Ablaufverfolgung aus dem Profiler-Datei -> Export -> Script Trace Definition-Menü. Ändern Sie das Skript, um das gewünschte Dateinamensmuster, die Dateigröße, den Rollover usw. anzugeben. –