Fre*_*ddy 6 sql-server-2008 sql-server activity-monitor
我想查看 SQL 服务器上的活动。所以我可以在服务器负载低时运行查询。我知道 SQL Server 中有一个活动监视器,但我的公司不希望我授予使用此工具的权利。显然,您可以杀死其他人的查询,这太危险了。
有没有办法用代码检查服务器的状态?(或者在不需要这些权限的情况下查看活动以便我可以手动运行它们?)
小智 6
下面的查询使用 sys.dm_os_performance_counters DMV 来捕获 SQL Server 的性能计数器。您可以在第二个GO命令之后更改WAITFOR DELAY选项和数字后缀,以修改您希望代码执行的时间间隔和次数。
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
IF OBJECT_ID('Tempdb..#PerformanceMonitor') IS NOT NULL
DROP TABLE #PerformanceMonitor;
CREATE TABLE #PerformanceMonitor
(
[object_name] NVARCHAR(255) NOT NULL,
[counter_name] NVARCHAR(255) NOT NULL,
[instance_name] NVARCHAR(255) NULL,
[cntr_value] BIGINT NOT NULL,
[cntr_type] INT NOT NULL,
[LoadedOn] DATETIME NOT NULL DEFAULT GETDATE(),
)
GO
INSERT INTO #PerformanceMonitor
([object_name],[counter_name],[instance_name],[cntr_value],[cntr_type])
(SELECT object_name,counter_name,instance_name,cntr_value,cntr_type
FROM sys.dm_os_performance_counters)
WAITFOR DELAY '00:00:10' --Change the interval here
GO 10 --Change the number of times the data will be captured here
SELECT * FROM #PerformanceMonitor
Run Code Online (Sandbox Code Playgroud)
一旦您拥有足够的数据并缩小了相关计数器的范围,您就可以决定运行查询的最佳时间。而且正如@Yaroslav 的回答中所提到的,记住您要运行的查询类型并相应地做出决定非常重要。最重要的是,小心生产数据!!!
IT 取决于您想要实际监控的内容。您还想记录为基线或性能趋势报告而收集的数据吗?
\n还有很多需要关注的领域,例如索引调优、查询计划分析等。这只是冰山一角,但将是一个很好的起点。
\n 归档时间: |
|
查看次数: |
563 次 |
最近记录: |