sys.fn_virtualfilestats (Transact-SQL)

返回数据库文件(包括日志文件)的 I/O 统计信息。 在 SQL Server 中,还可以从 sys.dm_io_virtual_file_stats 动态管理视图获得此信息。

适用范围:SQL Server(SQL Server 2008 到当前版本)。

主题链接图标 Transact-SQL 语法约定

语法

fn_virtualfilestats ( { database_id | NULL } , { file_id | NULL } )

参数

  • database_id | NULL
    数据库的 ID。 database_id 的数据类型为 int,无默认值。 指定 NULL 可返回 SQL Server 实例中所有数据库的信息。

  • file_id | NULL
    文件的 ID。 file_id 的数据类型为 int,无默认值。 指定 NULL 可为数据库中的所有文件返回信息。

返回的表

列名

数据类型

说明

DbId

smallint

数据库 ID。

FileId

smallint

文件 ID。

TimeStamp

int

提取数据时的数据库时间戳。

NumberReads

bigint

对文件发出的读取次数。

BytesRead

bigint

对文件发出的读取字节数。

IoStallReadMS

bigint

用户等待文件的读取 I/O 完成所费的总时间(以毫秒为单位)。

NumberWrites

bigint

对文件的写入次数。

BytesWritten

bigint

对文件写入的字节数。

IoStallWriteMS

bigint

用户等待文件的写入 I/O 完成所费的总时间(以毫秒为单位)。

IoStallMS

bigint

IoStallReadMSIoStallWriteMS 的和。

FileHandle

bigint

文件句柄的值。

BytesOnDisk

bigint

磁盘上的物理文件大小(以字节为单位)。

对于数据库文件,该值与 sys.database_files 中的 size 值相同,但以字节而不是页来表示。

对于数据库快照备用文件,它是操作系统用于文件的空间。

注释

fn_virtualfilestats 是系统表值函数,提供统计信息,如在文件上执行的 I/O 活动的总数。 可使用该函数来帮助跟踪用户读取文件或写入到文件必须等待的时间长度。 该函数还可帮助您识别出发生了大量 I/O 活动的文件。

权限

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

示例

A.显示数据库的统计信息

以下示例显示 ID 为 1 的数据库中的文件 ID 1 的统计信息。

SELECT *
FROM fn_virtualfilestats(1, 1);
GO

B.显示命名数据库和文件的统计信息

以下示例显示 AdventureWorks2012 示例数据库中日志文件的统计信息。 系统函数 DB_ID 用于指定 database_id 参数。

SELECT *
FROM fn_virtualfilestats(DB_ID(N'AdventureWorks2012'), 2);
GO

C.显示所有数据库和文件的统计信息

以下示例显示 SQL Server 实例内所有数据库中的所有文件的统计信息。

SELECT *
FROM fn_virtualfilestats(NULL,NULL);
GO

请参阅

参考

DB_ID (Transact-SQL)

FILE_IDEX (Transact-SQL)

sys.database_files (Transact-SQL)

sys.master_files (Transact-SQL)