sys.dm_os_sys_info (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

返回一组杂项的有用信息,以及 SQL Server 可用于和使用的资源。

注意

若要从 Azure Synapse Analytics 或 Analytics 平台系统(PDW)调用此名称,请使用名称 sys.dm_pdw_nodes_os_sys_info。 Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

列名称 数据类型 说明和特定于版本的说明
cpu_ticks bigint 指定当前 CPU 检查计数。 CPU 时钟周期数是从处理器的 RDTSC 计数器获得的。 这是一个单调增加的数字。 不可为 Null。
ms_ticks bigint 指定自从计算机启动以来的毫秒数。 不可为 Null。
cpu_count int 指定系统中的逻辑 CPU 数。 不可为 Null。

在Azure SQL 数据库中,此列可能会返回托管数据库或弹性池的计算机上的逻辑 CPU 数。 若要确定数据库或弹性池可用的逻辑 CPU 数,请使用cpu_limitsys.dm_user_db_resource_governance中的列。
hyperthread_ratio int 指定一个物理处理器包公开的逻辑内核数与物理内核数的比。 不可为 Null。
physical_memory_in_bytes bigint 适用于: SQL Server 2008 (10.0.x) 和 SQL Server 2008 R2 (10.50.x)。

指定计算机上的物理内存总量。 不可为 Null。
physical_memory_kb bigint 适用于:SQL Server 2012 (11.x) 及更高版本。

指定计算机上的物理内存总量。 不可为 Null。

在Azure SQL 数据库中,此列返回托管数据库或弹性池的计算机上的物理内存总量。 若要确定数据库或弹性池可用的物理内存量,请使用process_memory_limit_mbsys.dm_os_job_object中的列。
virtual_memory_in_bytes bigint 适用于: SQL Server 2008 (10.0.x) 和 SQL Server 2008 R2 (10.50.x)。

对用户模式进程可用的虚拟内存的数量。 此值可用于确定是否使用 3 GB 交换机启动 SQL Server。
virtual_memory_kb bigint 适用于:SQL Server 2012 (11.x) 及更高版本。

指定对用户模式进程可用的虚拟地址空间的总量。 不可为 Null。
bpool_committed int 适用于: SQL Server 2008 (10.0.x) 和 SQL Server 2008 R2 (10.50.x)。

表示内存管理器中的已提交内存 (KB)。 不包括内存管理器中的保留内存。 不可为 Null。
committed_kb bigint 适用于:SQL Server 2012 (11.x) 及更高版本。

表示内存管理器中的已提交内存 (KB)。 不包括内存管理器中的保留内存。 不可为 Null。
bpool_commit_target int 适用于: SQL Server 2008 (10.0.x) 和 SQL Server 2008 R2 (10.50.x)。

表示 SQL Server 内存管理器可以占用的内存量 (KB)。
committed_target_kb bigint 适用于:SQL Server 2012 (11.x) 及更高版本。

表示 SQL Server 内存管理器可以占用的内存量 (KB)。 目标量是使用多个输入计算的,例如:

- 系统的当前状态,包括其负载
- 当前进程请求的内存
- 计算机上安装的内存量
- 配置参数

如果 committed_target_kb 大于 committed_kb,内存管理器将尝试获取更多内存。 如果 committed_target_kb 小于 committed_kb,内存管理器会尝试收缩提交的内存量。 始终 committed_target_kb 包括被盗和保留的内存。 不可为 Null。
bpool_visible int 适用于: SQL Server 2008 (10.0.x) 和 SQL Server 2008 R2 (10.50.x)。

在进程虚拟地址空间中可直接访问的缓冲池中的 8 KB 缓冲区数。 如果未使用地址窗口扩展(AWE),则缓冲池获取其内存目标时(bpool_committed = bpool_commit_target),其值 bpool_visible 等于值 bpool_committed。 在 32 位版本的 SQL Server 上使用 AWE 时, bpool_visible 表示用于访问缓冲池分配的物理内存的 AWE 映射窗口的大小。 此映射窗口的大小由进程地址空间绑定,因此可见量小于提交的量。 出于数据库页以外的目的,内部组件消耗内存可以进一步降低此值。 如果值 bpool_visible 太低,则可能会收到内存不足错误。
visible_target_kb bigint 适用于:SQL Server 2012 (11.x) 及更高版本。

committed_target_kb与 . 不可为 Null。
stack_size_in_bytes int 指定 SQL Server 创建的每个线程的调用堆栈的大小。 不可为 Null。
os_quantum bigint 表示非抢先任务的量程(以毫秒数度量)。 Quantum (以秒为单位) = os_quantum / CPU 时钟速度。 不可为 Null。
os_error_mode int 指定 SQL Server 进程的错误模式。 不可为 Null。
os_priority_class int 指定 SQL Server 进程的优先级类。 Nullable。

32 = 普通。 错误日志显示 SQL Server 正在从正常优先级基础 (7) 启动。
128 = 高。 错误日志显示 SQL Server 以高优先级基数运行(13)。

有关详细信息,请参阅“配置优先级提升”(服务器配置选项)。
max_workers_count int 表示可以创建的最大工作线程数。 不可为 Null。
scheduler_count int 表示在 SQL Server 进程中配置的用户计划程序数。 不可为 Null。
scheduler_total_count int 表示 SQL Server 中的计划程序总数。 不可为 Null。
deadlock_monitor_serial_number int 指定当前死锁监视序列的 ID。 不可为 Null。
sqlserver_start_time_ms_ticks bigint 表示 ms_tick SQL Server 上次启动时的数字。 与当前 ms_ticks 列进行比较。 不可为 Null。
sqlserver_start_time datetime 指定上次启动 SQL Server 的本地系统日期和时间。 不可为 Null。

许多其他 SQL Server DMV 中的信息仅包括自上次数据库引擎启动以来的活动。 使用此列查找上次 SQL Server 数据库引擎启动时间。
affinity_type int 适用于: SQL Server 2008 R2(10.50.x)及更高版本。

指定当前使用中的服务器 CPU 进程关联的类型。 不可为 Null。 有关详细信息,请参阅 ALTER 标准版RVER CONFIGURATION (Transact-SQL)。

1 = MANUAL
2 = AUTO
affinity_type_desc nvarchar(60) 适用于: SQL Server 2008 R2(10.50.x)及更高版本。

描述列 affinity_type 。 不可为 Null。

MANUAL = 至少为一个 CPU 设置了相关性。
AUTO = SQL Server 可以在 CPU 之间自由移动线程。
process_kernel_time_ms bigint 适用于: SQL Server 2008 R2(10.50.x)及更高版本。

内核模式下所有 SQL Server 线程花费的总时间(以毫秒为单位)。 该值可能会大于单处理器时钟,因为它包括服务器上所有处理器的时间。 不可为 Null。
process_user_time_ms bigint 适用于: SQL Server 2008 R2(10.50.x)及更高版本。

用户模式下所有 SQL Server 线程花费的总时间(以毫秒为单位)。 该值可能会大于单处理器时钟,因为它包括服务器上所有处理器的时间。 不可为 Null。
time_source int 适用于: SQL Server 2008 R2(10.50.x)及更高版本。

指示 SQL Server 用于检索时钟时间的 API。 不可为 Null。

0 = QUERY_PERFORMANCE_COUNTER
1 = MULTIMEDIA_TIMER
time_source_desc nvarchar(60) 适用于: SQL Server 2008 R2(10.50.x)及更高版本。

描述列 time_source 。 不可为 Null。

QUERY_PERFORMANCE_COUNTER= QueryPerformanceCounter API 检索时钟时间。
MULTIMEDIA_TIMER = 检索时钟时间的 多媒体计时器 API。
virtual_machine_type int 适用于: SQL Server 2008 R2(10.50.x)及更高版本。

指示 SQL Server 是否在虚拟化环境中运行。 不可为 Null。

0 = NONE
1 = HYPERVISOR
2 = OTHER
virtual_machine_type_desc nvarchar(60) 适用于: SQL Server 2008 R2(10.50.x)及更高版本。

描述列 virtual_machine_type 。 不可为 Null。

NONE = SQL Server 未在虚拟机中运行。
HYPERVISOR = SQL Server 在运行虚拟机监控程序(采用硬件辅助虚拟化的主机 OS)托管的虚拟机内运行。
OTHER= SQL Server 在操作系统托管的虚拟机中运行,该虚拟机不使用硬件助手(例如 Microsoft 虚拟电脑)。
softnuma_configuration int 适用于:SQL Server 2016 (13.x) 及更高版本。

指定 NUMA 节点的配置方式。 不可为 Null。

0 = OFF 指示硬件默认值
1 = 自动软 NUMA
2 = 通过注册表手动软 NUMA
softnuma_configuration_desc nvarchar(60) 适用于:SQL Server 2016 (13.x) 及更高版本。

OFF = 软 NUMA 功能已关闭
ON = SQL Server 自动确定 Soft-NUMA 的 NUMA 节点大小
MANUAL = 手动配置的软 NUMA
process_physical_affinity nvarchar(3072) 适用于: 从 SQL Server 2017(14.x)开始。

标识为仅供参考。 不支持。 不保证以后的兼容性。
sql_memory_model int 适用于: SQL Server 2012 (11.x) SP4、SQL Server 2016 (13.x) SP1 及更高版本。

指定 SQL Server 用于分配内存的内存模型。 不可为 Null。

1 = 传统内存模型
2 = 锁定内存中的页
3 = 内存中的大页
sql_memory_model_desc nvarchar(60) 适用于: SQL Server 2012 (11.x) SP4、SQL Server 2016 (13.x) SP1 及更高版本。

指定 SQL Server 用于分配内存的内存模型。 不可为 Null。

CONVENTIONAL = SQL Server 正在使用传统内存模型来分配内存。 当 SQL Server 服务帐户在启动期间没有“锁定页”内存特权时,这是默认数据库引擎内存模型。
LOCK_PAGES = SQL Server 正在使用内存中的锁页来分配内存。 当 SQL Server 服务帐户在 SQL Server 启动时具有“锁定内存中的页”权限时,这是内存管理器的默认数据库引擎。
LARGE_PAGES = SQL Server 正在使用内存中的大型页来分配内存。 当 SQL Server 服务帐户在服务器启动期间具有“锁定内存页”权限,并且启用跟踪标志 834 时,SQL Server 才使用 Enterprise Edition 分配内存。
pdw_node_id int 适用于:Azure Synapse Analytics、Analytics Platform System (PDW)

此分发所在节点的标识符。
socket_count int 适用于: SQL Server 2016 (13.x) SP2 及更高版本。

指定系统上可用的处理器套接字数。
cores_per_socket int 适用于: SQL Server 2016 (13.x) SP2 及更高版本。

指定系统上可用的每个套接字的处理器数。
numa_node_count int 适用于: SQL Server 2016 (13.x) SP2 及更高版本。

指定系统上可用的 NUMA 节点数。 此列包括物理 NUMA 节点和软 NUMA 节点。
container_type int 适用于:SQL Server 2017 (14.x) 及更高版本。

指定容器 SQL Server 的类型正在内部运行。 不可为 Null。

0 (默认值) = NONE
1 = LINUX CONTAINER
2 = WINDOWS SERVER CONTAINER
3 = HYPER-V CONTAINER
container_type_desc nvarchar(60) 适用于:SQL Server 2017 (14.x) 及更高版本。

描述列 container_type 。 不可为 Null。

NONE = SQL Server 未在容器中运行。
LINUX CONTAINER = SQL Server 在 Linux 容器中运行。
WINDOWS SERVER CONTAINER = SQL Server 正在 Windows Server 容器中运行。
HYPER-V CONTAINER = SQL Server 在 Hyper-V 容器中运行。

权限

在 SQL Server 2019(15.x)和早期版本以及SQL 托管实例上,需要VIEW SERVER STATE权限。

在 SQL Server 2022(16.x)及更高版本中,需要对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。

在Azure SQL 数据库基本、S0S1 服务目标以及弹性池中的数据库、服务器管理员帐户、Microsoft Entra 管理员帐户或服务器角色的成员##MS_ServerStateReader##身份是必需的。 对于所有其他 SQL 数据库服务目标,需要数据库的 VIEW DATABASE STATE 权限或 ##MS_ServerStateReader## 服务器角色中的成员身份。