ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

识别SQL的 Prepared 僵尸计划

识别SQL的 Prepared 僵尸计划 1.查询僵尸 Prepared 计划 refcounts0refcounts 0僵尸计划没有会话引用SQL Server 后台缓存压力大时会自动清理可以手动清理。refcounts 0正在被会话占用活的预编译语句不能手动清理根源是 Delphi 客户端没有执行sp_unprepare没有调用UnPrepare。SELECT cp.refcounts, cp.usecounts, cp.plan_handle, cp.size_in_bytes, qt.text AS sql_text FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) qt WHERE objtype Prepared AND refcounts 0 --refcounts0 代表僵尸可以被缓存清理 ORDER BY size_in_bytes DESC;2.一万多条 正在执行的计划过多会导致泄露不正常属于严重泄漏分析一万多条堆积代表你的程序持续不断做【Prepare】但是绝大多数路径‘’没有执行 UnPrepare】精简一些可以直接 查询数量SELECT COUNT(*) FROM sys.dm_exec_cached_plansWHERE objtypePrepared AND refcounts1;查询到底是哪一个账号连线导致这么多残留语句时候显示无法执行用Windows 登入SQL后对数据管理账号 进行授权作业USE master; GO --给你的登录账号授予服务器级别状态查看权限 GRANT VIEW SERVER STATE TO 【账号】; GO若还是不行是因为 低版本环境SQL Server2022没有 sys.dm_exec_prepared_statements 视图授权也无法出现。没办法明确知道是哪一个SID
返回列表