利用SQL Profiler 追踪数据库操作

原文:利用SQL Profiler 追踪数据库操作

SQL Server 事件探查器 是一个界面,用于创建和管理跟踪并分析和重播跟踪结果。 这些事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件进行分析或用它来重播一系列特定的步骤。

SQL Server 事件探查器#

Microsoft SQL Server 事件探查器 是 SQL 跟踪的图形用户界面,用于监视 数据库引擎 或 Analysis Services 的实例。 您可以捕获有关每个事件的数据并将其保存到文件或表中供以后分析。 例如,可以对生产环境进行监视,了解哪些存储过程由于执行速度太慢影响了性能。 SQL Server 事件探查器 用于如下活动:

  • 逐步分析有问题的查询以找到问题的原因。
  • 查找并诊断运行慢的查询。
  • 捕获导致某个问题的一系列 Transact-SQL 语句。 然后用所保存的跟踪在某台测试服务器上复制此问题,接着在该测试服务器上诊断问题。
  • 监视 SQL Server 的性能以优化工作负荷。 有关为数据库工作负荷而优化物理数据库设计的信息
  • 使性能计数器与诊断问题关联。

注意:SQL Server 事件探查器 还支持对 SQL Server 实例上执行的操作进行审核。 审核将记录与安全相关的操作,供安全管理员以后复查。

事件#

事件是在 SQL Server 数据库引擎实例中生成的操作。 示例包括:

  • 登录连接、失败和断开。
  • Transact-SQL SELECTINSERTUPDATE 和 DELETE 语句。
  • 远程过程调用 (RPC) 批处理状态。
  • 存储过程的开始或结束。
  • 存储过程中的语句的开始或结束。
  • SQL 批处理的开始或结束。
  • 写入到 SQL Server 错误日志的错误。
  • 在数据库对象上获取或释放的锁。
  • 打开的游标。
  • 安全权限检查。

启动SQL Profiler工具#

如果你在安装SqlServer的时候勾上了这个工具,那么就一定可以搜索的出来,我在win10的情况下直接进行搜索就可以了。

那么如果你不是win10,也可以直接打开SQL server 然后点击工具就可以看到该工具了!

我们点击下之后会跳出来SQL server Profiler这个工具,需要我们进行连接到 SQL Server 实例的权限。

成功连接之后会跳出一个弹框,那么在此其中去选择你要跟踪的事件。

SQL profiler支持多连接跟踪,那么也就是可以分布式监控了,那么我们点击运行,就可以看到这样的可视化界面了。

我用它我无非就是看下执行的什么SQL还有时间了,我执行了一条这样的sql,效果图如下。

use EFCore

从刚才的15行直接变成了313,是不是挺可怕的,当你不限制,分布式监控的情况下一秒几千行。。。最好还是要做一做事件限制和数据列。

那么如何保存记录日志呢?

注意:关闭了这个可视化界面,只要你的服务没有关闭,那么这个是一直跑着呢,怎么停止呢? (选中那么点那个)

刚才我上面说过,一下子出来了那么多记录,我们应该怎么办,网上很多底层的东西,类似CPU,进程号什么的,我是个渣渣,我只会TextData,大概就是这么做吧。

利用SQL profile可以记录mssql的数据库操作,这无疑是微软技术的糖果。

原文地址:https://www.cnblogs.com/lonelyxmas/p/12052104.html

时间: 2024-10-08 01:26:36

利用SQL Profiler 追踪数据库操作的相关文章

利用SQL Profiler处理开销较大的查询

原文:利用SQL Profiler处理开销较大的查询 当SQL Server的性能变差时,最可能发生的是以下两件事: 首先,某些查询产生了系统资源上很大的压力.这些查询影响整个系统的性能,因为服务器无法足够快速地服务其他SQL查询. 另外,开销较大的查询阻塞了其他请求相同数据库资源的查询,进一步降低了这些查询的性能.优化开销较大的查询不仅改进它们本身的性能,而且减少数据库阻塞和SQL Server资源压力从而提高了其他查询的性能. 识别开销较大的查询 SQL Server的目标是在最短时间内将结

SQL中DML(数据库操作语言)的使用

1.插入语句: INSERT [INTO] table [(column1, column2, column3, . . .)] VALUES(value1, value2, value3, . . .); 例:INSERT INTO user VALUES(NULL, 'test', '123456'); 例:INSERT INTO user (username, password) VALUES('test', '123456'); 实际上还有一种方式: 例:INSERT INTO user

SQL SERVER C#数据库操作类

using System;using System.Collections;using System.Collections.Specialized;using System.Data;using System.Data.SqlClient;using System.Configuration; namespace LiTianPing.SQLServerDAL //可以修改成实际项目的命名空间名称{ /**//// <summary> /// Copyright (C) 2004-2008

PL\SQL中对数据库操作后没有改变

问题描述:在PL\SQL的SQL WINDOW中对数据库进行增.删.改操作后,在别的命令窗口查没有改变问题分析:SQL WINDOW中对数据库的增删改操作都是临时的,需要进行COMMIT才能生效,但是在关闭窗口时操作会提示是否保存.解决方法:对每次操作后,添加COMMIT语句,或者直接使用右上角的提交按钮. 原文地址:http://blog.51cto.com/13402621/2156312

SQL于DML(数据库操作语言)采用

1.Insert语句: INSERT [INTO] table [(column1, column2, column3, . . .)] VALUES(value1, value2, value3, . . .); 例:INSERT INTO user VALUES(NULL, 'test', '123456'); 例:INSERT INTO user (username, password) VALUES('test', '123456'); 实际上另一种方式: 例:INSERT INTO u

利用SQL语句重置数据库中所有表的标识列(自增量)

可以应用于2种场景: 1.清空所有表中的数据,数据清空后,最好是能够让表中的标识列从1开始记数,所以要重置标识列的当前值. 2.用复制的方式,发布订阅同步数据之后,订阅端的数据不会自动增长,比如自增ID该9527了,但如果中间有跳过的ID,会自动填充缺失的路过的ID,该执行如下代码,即可从应该的9527开始增长. declare @tablename varchar(50) declare @sql varchar(1000) declare cur cursor for select name

[C#对sql操作]C#对sql server 2008数据库操作

using System.Data; using System.Data.SqlClient SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings[SiteClass.dbname].ToString()); SqlCommand cmd = new SqlCommand("dbo.Backorder", conn); conn.Open();

怎么利用SQL语句查询数据库中具体某个字段的重复行

select * from [tablename] group by SeriNohaving count(SeriNo)<>1

利用SQL语句查询数据库中具体某个字段的重复行

select zyzlb,nation,frzw from jgdx where zyzlb in (select zyzlb from jgdx group by zyzlb having COUNT(*)>1) order by zyzlb