You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell脚本通过SMO获取sys.dm_db_index_usage_stats数据?

使用PowerShell通过SMO获取sys.dm_db_index_usage_stats数据

SMO的Views集合仅能获取视图的元数据(比如名称、定义信息等),要拿到sys.dm_db_index_usage_stats的实际数据,需要通过SMO执行SQL查询来实现,具体脚本如下:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SQLServer.Smo") | Out-Null
$SQLServer = "你的服务器名称"
$srv = New-Object Microsoft.SqlServer.Management.Smo.Server $SQLServer

# 编写查询语句,可按需添加过滤条件
$query = @"
SELECT * 
FROM sys.dm_db_index_usage_stats
-- 可选:过滤指定数据库的数据
-- WHERE database_id = DB_ID('目标数据库名')
"@

# 执行查询并返回结果集
$resultSet = $srv.ConnectionContext.ExecuteWithResults($query)

# 输出查询结果,也可改用Export-Csv等命令导出数据
$resultSet.Tables[0] | Format-Table -AutoSize

关键说明:

  • ExecuteWithResults方法会返回包含查询结果的DataSet对象,其中Tables[0]对应查询返回的唯一结果集。
  • 若需要针对特定数据库查询,可在语句中加入USE 数据库名;,或者通过database_id字段过滤,比如WHERE database_id = DB_ID('master')。
  • 你之前的脚本仅遍历了视图的元数据,这就是只能看到视图名称却无法获取数据的原因。

内容的提问来源于stack exchange,提问作者evil-cat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:50:24