sys.dm_os_hosts

返回当前在 SQL Server 实例中注册的所有主机。该视图还返回这些主机使用的资源。

列名

数据类型

说明

host_address

varbinary(8)

主机对象的内部内存地址。

type

nvarchar(60)

宿主组件的类型。例如:

SOSHOST_CLIENTID_SERVERSNI = SQL Server 本机接口

SOSHOST_CLIENTID_SQLOLEDB = SQL Server Native Client OLE DB 访问接口

SOSHOST_CLIENTID_MSDART = Microsoft 数据访问运行时

name

nvarchar(32)

主机名称。

enqueued_tasks_count

int

该主机放置到 SQL Server 中的队列上的任务总数。

active_tasks_count

int

该主机放在队列中的、正在运行的任务数。

completed_ios_count

int

通过该主机发出和完成的 I/O 总数。

completed_ios_in_bytes

bigint

通过该主机完成的 I/O 字节总数。

active_ios_count

int

与该主机相关的、当前正在等待完成的 I/O 请求总数。

default_memory_clerk_address

varbinary(8)

与该主机相关的内存 clerk 对象的内存地址。有关详细信息,请参阅 sys.dm_os_memory_clerks

权限

需要对服务器拥有 VIEW SERVER STATE 权限。

注释

SQL Server 允许不是 SQL Server 可执行文件一部分的组件(如 OLE DB 访问接口)分配内存并加入非抢先计划。这些组件由 SQL Server 承载,而且由这些组件分配的所有资源都被跟踪。通过承载这些组件,SQL Server 可以更好地顾及 SQL Server 可执行文件外部的组件所用的资源。

关系基数

关系

sys.dm_os_hosts. default_memory_clerk_address

sys.dm_os_memory_clerks. memory_clerk_address

一对一

sys.dm_os_hosts. host_address

sys.dm_os_memory_clerks. host_address

一对一

示例

以下示例可确定由宿主组件调配的内存总量。

SELECT h.type, SUM(single_pages_kb + multi_pages_kb) AS commited_memory
FROM sys.dm_os_memory_clerks AS mc 
INNER JOIN sys.dm_os_hosts AS h 
    ON mc.memory_clerk_address = h.default_memory_clerk_address
GROUP BY h.type;