首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server 2005中的最新查询

Server 2005中的最新查询
EN

Database Administration用户
提问于 2011-09-16 20:41:08
回答 2查看 1.3K关注 0票数 3

我正在使用PHP应用程序与数据库交互,需要捕获一个错误的查询。它是动态生成的SQL,我不知道100%的代码,也不编写它,所以我需要看看它在做什么。

使用2008,我发现很难在数据库上找到最后n个执行的查询。我已经搜索了一场风暴,但是我看到的所有解决方案都需要"sql_handle“,这是我的数据库的兼容性级别中无法使用的特性,而且为了引导我看到的所有解决方案,似乎没有捕捉到这个web应用程序使用的动态查询。

我正在使用以下查询:

代码语言:javascript
运行
复制
SELECT TOP 50 * FROM(SELECT COALESCE(OBJECT_NAME(s2.objectid),'Ad-Hoc') AS ProcName,
  execution_count,s2.objectid,
    (SELECT TOP 1 SUBSTRING(s2.TEXT,statement_start_offset / 2+1 ,
      ( (CASE WHEN statement_end_offset = -1
  THEN (LEN(CONVERT(NVARCHAR(MAX),s2.TEXT)) * 2)
ELSE statement_end_offset END)- statement_start_offset) / 2+1)) AS sql_statement,
       last_execution_time
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 ) x
WHERE sql_statement NOT like 'SELECT TOP 50 * FROM(SELECT %'
ORDER BY last_execution_time DESC

但是,它不能接受地要求在Server 2005中更改sp_dbcmptlevel (搜索要求comptlevel在90,我需要在80),而且在最近的一个例子中,甚至不返回任何运行在数据库上的动态查询;它只是返回存储过程的操作。

具有相同的可压缩性和不完全结果问题的类似解决方案是:

代码语言:javascript
运行
复制
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

这个查询返回一个非常小且非常奇怪的查询子集,包括最近的查询(通常本身)和一组create procedure语句。

是否有任何SSMS或系统数据库查询功能允许我查看或捕获最近的查询?如果我必须以某种方式捕获和保存查询字符串,这是可以接受的,因为这只是在测试系统中。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2011-09-16 20:55:03

服务器事件探查器 就是为了做到这一点.

有了它,你可以:

  • 在目标实例上执行查询时捕获它们
  • 捕获其他实例和数据库事件,如死锁、登录和错误。
  • 通过查询中的文本、登录名、数据库名等筛选捕获的查询。
票数 3
EN

Database Administration用户

发布于 2011-09-16 21:00:00

如果获得运行查询的SPID,这将为您提供最后一个运行语句:

代码语言:javascript
运行
复制
DECLARE @sqltext VARBINARY(128)

SELECT @sqltext = sql_handle
FROM sys.sysprocesses
WHERE spid = 85 --replace this with your SPID

SELECT TEXT
FROM sys.dm_exec_sql_text(@sqltext)
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/5881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档