如何捕获通过.net Entity Framework 6.2进行的每个SQL调用

问题描述 投票:0回答:1

希望捕获并记录实体框架对数据库的每个调用。最好的方法是什么?那是最好的方法https://www.entityframeworktutorial.net/entityframework6/database-command-interception.aspx吗?

谢谢!

.net entity-framework
1个回答
0
投票

您可以通过sys.processes从数据库捕获它

    With AllJobsRan(SPID,LastBatch,SourceProgram,HostName,LoginCredentials, script)
    as (
    select
        P.spid
    ,   P.last_batch
    ,   P.program_name
    ,   P.hostname
    ,   P.loginame
    ,   sql_handle
    from master.dbo.sysprocesses P
    where 
    --and      P.status not in ('background', 'sleeping')
    --and      P.cmd not in ('AWAITING COMMAND'
                        --,'MIRROR HANDLER'
                        --,'LAZY WRITER'
                        --,'CHECKPOINT SLEEP'
                        --,'RA MANAGER')
                        -- AND 
                        p.last_batch > '2/17/2020'
                        AND p.last_batch < '2/18/2020'
    ),
    Scripts(byteScript)
    as (
        select script from AllJobsRan
    )
select  
    AllJobsRan.SPID,
    AllJobsRan.LastBatch,
    AllJobsRan.HostName,
    AllJobsRan.LoginCredentials,
    LEN([SQLText].text) as [ScriptLength],
    [SQLText].text from AllJobsRan 
CROSS APPLY 
    sys.dm_exec_sql_text(AllJobsRan.[script]) as [SQLText]
order by 
    LastBatch,[ScriptLength] desc
© www.soinside.com 2019 - 2024. All rights reserved.