sys.database_files (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
每个存储在数据库本身中的数据库文件在表中占用一行。 这是一个基于每个数据库的视图。
列名称 | 数据类型 | 说明 |
---|---|---|
file_id |
int | 数据库内文件的 ID。 |
file_guid |
uniqueidentifier | 文件的 GUID。NULL = 数据库已从早期版本的 SQL Server 升级(对 SQL Server 2005 和早期版本有效)。 |
type |
tinyint | 文件类型: 0 = 行数 1 = 日志 2 = FILESTREAM 3 = 标识为仅供参考。 不支持。 不保证以后的兼容性。 4 = 全文 |
type_desc |
nvarchar(60) | 文件类型的说明:ROWS LOG FILESTREAM FULLTEXT |
data_space_id |
int | 值可以是零,也可以大于零。 表示 0 数据库日志文件的值,大于零的值表示存储此数据文件的文件组的 ID。 |
name |
sysname | 数据库中文件的逻辑名称。 |
physical_name |
nvarchar(260) | 操作系统文件名。 如果数据库由可用性组可读次要副本托管,physical_name 则表示主副本数据库的文件位置。 有关可读辅助数据库的正确文件位置,请查询 sys.sysaltfiles。 |
state |
tinyint | 文件状态: 0 = ONLINE 1 = RESTORING 2 = RECOVERING 3 = RECOVERY_PENDING 4 = SUSPECT 5 = 标识为仅供参考。 不支持。 不保证以后的兼容性。 6 = OFFLINE 7 = DEFUNCT |
state_desc |
nvarchar(60) | 文件状态的说明:ONLINE RESTORING RECOVERING RECOVERY_PENDING SUSPECT OFFLINE DEFUNCT 有关详细信息,请参阅文件状态。 |
size |
int | 文件的当前大小(以 8 KB 页为单位)。 0 = 不适用 对于数据库快照来说,size 表示该快照可以一直用于文件的最大空间。 对于 FILESTREAM 文件组容器,size 反映当前使用的容器的大小。 |
max_size |
int | 最大文件大小(以 8 KB 为单位的页数): 0 = 不允许增长。 -1 = 文件可以增长,直到磁盘已满。 268435456 = 日志文件可以增长到最大大小为 2 TB。 对于 FILESTREAM 文件组容器, max_size 反映容器的最大大小。使用不受限制的日志文件大小报告 -1 升级的数据库的最大日志文件大小。在Azure SQL 数据库中,所有数据文件的值之和 max_size 可以小于数据库的最大数据大小。 使用 DATABASEPROPERTYEX(DB_NAME(), 'MaxSizeInBytes') 来确定最大数据大小。 |
growth |
int | 0 = 文件大小固定,不会增长。 大于 0 = 文件将自动增长。 如果 is_percent_growth = 0,则增长增量以 8 KB 页为单位,舍入为最接近的 64 KB。如果 is_percent_growth = 1,则增长增量表示为整数百分比。 |
is_media_read_only |
bit | 1 = 文件位于只读介质上。 0 = 文件位于读写介质上。 |
is_read_only |
bit | 1 = 文件标记为只读。 0 = 文件标记为读/写。 |
is_sparse |
bit | 1 = 文件是稀疏文件。 0 = 文件不是稀疏文件。 有关详细信息,请参阅查看数据库快照的稀疏文件大小 (Transact-SQL)。 |
is_percent_growth |
bit | 1 = 文件的增长以百分比表示。 0 = 以页数为单位表示绝对增长大小。 |
is_name_reserved |
bit | 1 = 删除的文件名 (name 或 physical_name ) 仅在下一个日志备份之后可重用。 从数据库删除文件时,逻辑名称将停留在保留状态,直到下一次日志备份。 此列只在完整恢复模式和大容量日志恢复模式下相关。 |
create_lsn |
numeric(25,0) | 文件创建时的日志序列号 (LSN)。 |
drop_lsn |
numeric(25,0) | 文件删除时的 LSN。 0 = 文件名无法重用。 |
read_only_lsn |
numeric(25,0) | 包含该文件的文件组从可读/写更改为只读(最新更改)时的 LSN。 |
read_write_lsn |
numeric(25,0) | 包含该文件的文件组从只读更改为可读/写(最新更改)时的 LSN。 |
differential_base_lsn |
numeric(25,0) | 差异备份的基准。 在此 LSN 之后更改的数据区将包含在差异备份中。 |
differential_base_guid |
uniqueidentifier | 差异备份所基于的基准备份的唯一标识符。 |
differential_base_time |
datetime | 对应于 differential_base_lsn . |
redo_start_lsn |
numeric(25,0) | 下一次前滚必须开始时的 LSN。 除非 NULL RESTORING = state 或 。state = RECOVERY_PENDING |
redo_start_fork_guid |
uniqueidentifier | 恢复分叉的唯一标识符。 first_fork_guid 还原的下一个日志备份必须与此值匹配。 这表示文件的当前状态。 |
redo_target_lsn |
numeric(25,0) | 对此文件的联机前滚可以停止时的 LSN。 除非 NULL RESTORING = state 或 。state = RECOVERY_PENDING |
redo_target_fork_guid |
uniqueidentifier | 可以在其上恢复文件的恢复分叉。 与 redo_target_lsn . |
backup_lsn |
numeric(25,0) | 文件的最新数据或差异备份的 LSN。 |
注意
在删除或重新生成大型索引时,或者在删除或截断大型表时,数据库引擎将延迟实际页释放及其关联锁,直至事务提交完毕为止。 延迟的删除操作不会立即释放已分配的空间。 因此,删除或截断大型对象后立即返回 sys.database_files
的值可能不会反映可用的实际磁盘空间。
权限
要求 公共 角色具有成员身份。 有关详细信息,请参阅 Metadata Visibility Configuration。
示例
以下语句返回每个数据库文件的名称、文件大小和空闲的空间量。
SELECT name, size/128.0 FileSizeInMB,
size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0
AS EmptySpaceInMB
FROM sys.database_files;
在管理 Azure SQL 数据库中的数据库的文件空间中,可以找到使用 SQL 数据库的示例查询。 方法: