标签: profiler

SQL Server 跟踪在生产中是否“被认为有害”?

背景:谨慎的 DBA

我们已经被收购了几次,我们最新的霸主拥有 DBA,他们小心地保护他们的生产数据库服务器。

总的来说这是好的。

但是,我们遇到了开发人员和 DBA 之间的一个争论点:他们不会对生产数据库服务器运行跟踪。

我们作为开发人员的经验:SQL Server 跟踪 + RML 实用工具

过去,当应用程序实例运行缓慢时,我们会通过 .sql 脚本运行跟踪,压缩输出,然后使用 Microsoft 的 RML 实用程序对其进行处理。

请注意,我们不运行基于 GUI 的分析器工具,因为这会显着降低性能(数据库需要等待更新 GUI)。这些跟踪只是“记录活动”到数据库服务器的本地文件系统。我们的脚本一次运行指定分钟数(例如 10 分钟)的跟踪。

跟踪和 RML 实用程序的组合效果很好:报告易于使用。它显示热点(见下文),报告提供有用的信息,它们允许深入了解实际执行计划等。它比 Oracle 提供的任何东西(或至少几年前)都要好得多。

(热点:如果一个查询耗时 1/10 秒,但执行了 400,000 次,它会出现在报告中,高于执行一次需要 30 秒的查询。)

这些年来,我做了一些表演工作。我的经验是,从“真实负载下的真实数据库”中捕获“实际数据”胜过程序员“猜测”并模拟他们想象的问题。这就是为什么我认为 SQL Server 跟踪几乎是解决问题的“银弹”。

我的问题

  • 在生产中运行 SQL Server 跟踪(填满磁盘、降低性能等)的主要、合理的问题是什么?
  • 这些担忧有效吗?如果是这样,我们如何解决它们?
  • 跟踪并分析“实际问题”似乎是了解和解决情况的最清晰步骤。有哪些替代方案?

performance sql-server profiler

5
推荐指数
1
解决办法
2738
查看次数

SQL Server Profiler 中的 RowCounts 是如何计算的?

我有一个问题,其中RowCountsaSP:StmtCompleted中的列返回的计数与为执行 select 语句而返回的实际行不同。

select @@RowCount在 select 查询之后尝试了 a ,它返回的计数与count(*). 我现在很好奇是什么导致分析器返回不正确的行数。

我确实阅读了相关线程,表明碎片化可能会产生错误的计数并且DBCC UPDATEUSAGE可能会解决问题,但我想在应用它之前了解我在做什么。我将不胜感激。另外,索引是否在计数中起作用?

相关问答:SQL Server Row Count sp_spaceused rows 差异

我正在使用 SQL Server 2014 Profiler。

这是您在 Profiler 中查看行计数的方式,以防万一有人想知道:在 SQL Profiler 中显示行计数

sql-server profiler sql-server-2014

5
推荐指数
1
解决办法
2118
查看次数

对于每个插入语句,我在 SQL Server Profiler 中看到 sp_executesql

在调整我们的数据库和查询我们的一种产品时,我决定在 QA 环境中打开 Profiler 并查看它显示的内容。

我看到对于我调用的每个插入,都会使用插入语句的文本对 sp_executesql 进行调用。

这似乎很受欢迎,有没有办法关闭它?

环境:

  • SQL Server 2008 R2 标准版
  • Windows Server 2008 R2 企业版
  • 32 GB 内存
  • 2x4 至强

performance sql-server-2008 profiler

4
推荐指数
2
解决办法
1675
查看次数

我可以授予用户对单个数据库的 ALTER TRACE 权限吗?

我有一个开发用户,他需要能够在单个数据库上使用 SQL Profiler。有没有办法在不授予服务器范围的 ALTER TRACE 权限的情况下启用它?(用户根本不应该拥有对其他数据库的任何访问权限。)这是 Microsoft SQL Server 2008 R2。

sql-server-2008 profiler

4
推荐指数
1
解决办法
1万
查看次数

查找导致错误 3930 的确切语句

最近,我一直在 SQL Server 日志中看到错误。

代码:3930 描述:“当前事务无法提交,无法支持写入日志文件的操作。回滚事务。”

使用 SQL Profiler,如何找到导致此错误的确切语句?SQL Profiler 中的哪一列填充了 SQL 错误日志中的“消息”列?不幸的是,我们只在生产中得到这个,所以我需要在那里运行一个尽可能轻量级的跟踪。你们推荐什么来捕获有问题的代码?

sql-server profiler error-handling trace

4
推荐指数
1
解决办法
1万
查看次数

Profiler TextData 输出为空

我正在对数据库进行跟踪并将跟踪实时转储到表中。

我进行跟踪的原因是我想查看对数据库执行的所有查询。

+-----------+------------+----------+------------------------------+------------+-----------+-----+-------+--------+-----------+-----------------+------+-------------------------+-------------------------+------------+
| RowNumber | EventClass | TextData |       ApplicationName        | NTUserName | LoginName | CPU | Reads | Writes | Duration  | ClientProcessID | SPID |        StartTime        |         EndTime         | BinaryData |
+-----------+------------+----------+------------------------------+------------+-----------+-----+-------+--------+-----------+-----------------+------+-------------------------+-------------------------+------------+
|     13073 |         15 | NULL     | .Net SqlClient Data Provider | NULL       | reviewer  |   0 |  2172 |      0 | 439776000 |            5096 |  104 | 2012-12-14 12:54:22.893 | 2012-12-14 13:01:42.670 | NULL       |
|     13057 |         15 | NULL     | .Net SqlClient …
Run Code Online (Sandbox Code Playgroud)

sql-server profiler

4
推荐指数
1
解决办法
2995
查看次数

我可以在事件发生时收到通知吗?

SQL Servers 有跟踪和 XEvents。这些用于捕获和分析 SQL Server 实例发生的情况。事件存储在堆栈中供以后分析。例如,如果我决定监视数据库中的任何死锁,我只是查询跟踪文件以查看一段时间内死锁的历史记录。这是我的问题:

当事件发生时,在我们的死锁事件示例中,有没有办法使用 msdb.dbo.xp_send_dbmail 获取电子邮件通知?

sql-server-2008 sql-server deadlock profiler extended-events

4
推荐指数
2
解决办法
3436
查看次数

查找长期运行存储过程 SQL Server 的原因

我有一个存储过程,它每 2.5 秒被一个程序 24-7 调用一次。此过程通常在 10 毫秒内运行。一天几次(3 -5 次)运行大约需要 42953 毫秒(总是在 42950 和 42959 毫秒之间)。

我如何找到或描述为什么需要这么长时间的原因?

更新: Sql 服务器版本 2008 R2

程序:

select 
    [view_EventsToRaise].EventId,
    [view_EventsToRaise].EventStatus,
    [view_EventsToRaise].Tag,
    [view_EventsToRaise].SessieGebruikerId,
    Postbus.Persoon_Id_afz      as PersoonIdAfz,
    Postbus.Persoon_Id_adr      as PersoonIdAdr,
    Postbus.Persoon_Id_derde    as PersoonIdDerde,
    Postbus.Locatie_Id          as LocatieId,
    Postbus.Artikel_Id          as ArtikelId,
    Postbus.Onderwerp_Id        as OnderwerpId,
    Postbus.Bedrijf_Id_afz      as BedrijfIdAfz,
    Postbus.Bedrijf_Id_adr      as BedrijfIdAdr,
    Postbus.Bedrijf_Id_derde    as BedrijfIdDerde,
    Postbus.Document_Id         as DocumentId,      
    Postbus.Document            as Document,        
    DataKenmerk.Code            as PostbusDataCode,
    PostbusData.Inhoud          as PostbusDataInhoud,
    SimObj.Id                   as SimObjId,
    Eventsoort.Code             as Eventsoort
from 
    [view_EventsToRaise]
    left outer join Postbus
        left outer …
Run Code Online (Sandbox Code Playgroud)

sql-server profiler sql-server-2008-r2

4
推荐指数
1
解决办法
1397
查看次数

适用于 Mac 操作系统的 SQL 探查器

是否有可以在 Mac 上安装和运行的 SQL 分析器 MSSSQL?只要它可以在我的 Mac OS 上运行,它是否是付费版本并不重要。谢谢。

sql-server profiler sql-server-2016

4
推荐指数
1
解决办法
2373
查看次数

如何让 SQL Server Profiler 显示修改后的表

当发生回发时,我目前维护的 ASP.Net 应用程序在数据库中有很多活动。对于我目前正在查看的示例,Profiler 显示了大量活动只是为了刷新 UI,但我知道它还会更新几个表。

什么是最好的跟踪过滤器,只显示插入、更新、删除的 sprocs/语句?

有没有办法只显示 I/U/D 的表(但我怀疑这是可能的)?

感谢您对此的帮助。

sql-server profiler

3
推荐指数
1
解决办法
613
查看次数