我们公司有一个中央 Sql Server 数据库,该数据库连接到许多应用程序(Web、后端/前端服务、后台等)。该数据库托管在带宽昂贵的小国(为了税收优势)。
有没有办法详细了解带宽使用情况?例如每个应用程序、每个存储过程、每个登录如何发送字节......
我想在 Sql Server 上监视它,因为我不能在客户端执行此操作(客户端太多,不适合为此更改客户端代码)
有谁知道如何在特定数据库(特定于数据库,而不是服务器级别)上找到批处理请求/秒?
这是在特定数据库上查找事务/秒的方法。
DECLARE @Counter bigint
SELECT @Counter = cntr_value FROM sys.dm_os_performance_counters
WHERE counter_name = 'Transactions/sec'
AND object_name='SQLServer:Databases'
AND instance_name ='VirendraTest' -- Your DB Name
-- Wait for 1 second
WAITFOR DELAY '00:00:01'
SELECT cntr_value = @Counter FROM sys.dm_os_performance_counters
WHERE counter_name ='Transactions/sec'
AND object_name ='SQLServer:Databases'
AND instance_name ='VirendraTest' -- Your DB Name
Run Code Online (Sandbox Code Playgroud) 我们正在将 SQL Server 数据库的 dns 条目从机器名称迁移到 C 名称,以准备将其从裸机移动到虚拟机。我们已经切换了我们知道的所有连接字符串,并在我们的部门发布了指令,要求每个人切换他们的连接,以防有一次性应用程序或数据库连接的电子表格等。
我们想监控进入框的流量,以验证没有通过旧机器名称到达服务器的传入流量。有没有办法做到这一点?我特别需要的是所有客户端用来访问服务器的 url。我们尝试使用 Wireshark 监控端口,但这似乎没有提供我们需要的信息。
谢谢!
如果我想知道现在发生了什么,那么我会使用 Adam Machanic 的sp_whoisactive。如果我想了解我的服务器最近发生了什么,那么我将使用查询存储。
扩展事件旨在取代 Profiler,但我认为查询存储的组合sp_whoisactive已经在 2016 或更高版本的任何 SQL Server 上做到了这一点。考虑到这一点,我什么时候会使用扩展事件?
为了获得灵感,我检查了dbatools 附带的扩展事件。我没有留下深刻的印象。它们似乎只对长期监控查询存储不存储的内容有用。例如:某些登录正在执行的操作、锁定、极其特定的 IO 类型、存储过程参数的使用以及已弃用的功能的使用。这些都很好,但坦率地说,我无法想象自己必须在服务器上进行如此外科手术式的调整。有没有我遗漏的常见用法?
monitoring sql-server extended-events query-store sp-whoisactive