如何用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
相关产品推荐
相关产品推荐

