SQL Server 查看数据库空间分配情况的 2 种方法

方法 1、 sys.dm_db_file_space_usage。

方法 2、 sys.dm_db_session_space_usage。

--------------------------------------------------------------------------------------------------------------------------------------------------------------

方法 1 、

sys_dm_db_file_space_usage 它度量方式是以页(page)为单位的,对每个数据库的不同文件都返回一行(不包涵 log 文件)

用它是时候先要 use 到指定的数据库才行。它不会返回当前实例中的所有数据库的信息,针对当前数据库。

total_page_count :总页面数

allocated_extent_page_count :文件的已分配区中的总页数 。

unallocated_extent_page_count:文件的未分配区中的总页数。

user_object_reserved_page_count:从统一区为数据库中的用户对象分配的总页数。 计数中包括已分配区中未使用的页。

internal_object_reserved_page_count:从统一区为文件中的内部对象分配的总页数。

mixed_extent_page_count :文件的已分配混合区中的已分配和未分配总页数。

例子、

select
          DB_NAME(usage.database_id) as DBName,
          sum(usage.unallocated_extent_page_count) as UnallocatedPage,
          sum(usage.allocated_extent_page_count) as AllocatedPage,
          sum(usage.internal_object_reserved_page_count)as InternalPage,
          sum(usage.user_object_reserved_page_count) as UserObjectPage,
          sum(usage.mixed_extent_page_count) as MixedPage from sys.dm_db_file_space_usage as usage
          group by usage.database_id
          go

方法 2、

sys.dm_db_session_space_usage 返回每个会话为数据库分配和释放的页数、它只是针对tempdb空间使用情况,别的数据库看不了

user_objects_alloc_page_count:由该会话为用户对象保留或分配的页数。

user_objects_dealloc_page_count:由该会话释放并不再为用户对象保留的页数。 

internal_objects_alloc_page_count:由该会话为内部对象保留或分配的页数。

internal_objects_dealloc_page_count:由该会话释放并不再为内部对象保留的页数。

例子、

select
           DB_NAME(usage.database_id) as DBName,
           usage.session_id,
           usage.user_objects_alloc_page_count,
           usage.user_objects_dealloc_page_count,
           usage.internal_objects_alloc_page_count,
           usage.internal_objects_dealloc_page_count
           from sys.dm_db_session_space_usage usage;
           go

小结:

sys.dm_db_session_usage 只针对 tempdb。

时间: 2024-10-11 20:43:27

SQL Server 查看数据库空间分配情况的 2 种方法的相关文章

SQL Server 查看空间使用情况的 5 种方法

解决方法: 方法 1.sp_spaceused 方法 2.dbcc sqlperf 方法 3.dbcc showfilestats 方法 4.dbcc showcontig 方法 5.sys.dm_db_partiton_stats -------------------------------------------------------------------------------------------------------------------------------------

SQL Server查询数据库空间分配情况、数据库备份信息

查询数据库空间分配情况: 1 use master 2 go 3 create procedure dbo.proc_getdbspaceused 4 as 5 begin 6 set nocount on 7 create table #dbsize( 8 database_id int 9 ,database_name nvarchar(1024) 10 ,size_kb bigint 11 ,space_available_kb bigint 12 ,reserved_kb bigint

SQL Server 查看备份集元数据的 4 种方法。

方法 1. restore labelonly 方法 2. restore headeronly 方法 3. restore filelistonly 方法 4. restore verifyonly -----------------------------------------------------------------------------------------------------------------------------------------------------

SQL Server 查看数据库在数据缓存(data cache)中占用的空间大小

1 use master 2 go 3 select * from sys.dm_os_buffer_descriptors 4 go 5 6 --查看数据库在数据缓存(data cache)中占用的空间大小 7 --由于每个数据页对应动态管理视图(dynamic management view,DMV)中的一行,为128 字节,为1/8个千字节(KB) 8 --1字节(Byte)=8位(Bit) 9 --1千字节(KB)=1024字节(Byte) 10 --1兆(MB)=1024千字节(KB)

SQL SERVER 查看数据库信息

a.使用sys.database_files查看有关数据库文件的信息 b.使用sys.filegroups查看有关数据库组的信息. c.使用sys.master_files 查看数据库文件的基本信息和状态信息. d.使用sys.databases 数据库和文件目录视图查看有关数据库的基本信息. e.g. select * from sys.database_files; select * from sys.filegroups; select * from sys.master_files; s

SQL Server 查看数据库是否存在阻塞

1 CREATE procedure [dbo].[sp_who_lock] 2 as 3 begin 4 declare @spid int,@bl int, 5 @intTransactionCountOnEntry int, 6 @intRowcount int, 7 @intCountProperties int, 8 @intCounter int 9 create table #tmp_lock_who (id int identity(1,1),spid smallint,bl s

SQL Server -查看数据库扩展属性

1.fn_listextendedproperty 函数可以基于对象类型显示单个数据库对象或数据库中所有对象的扩展属性.例如,可以返回表或表中所有列的扩展属性. A.下面的示例显示了数据库本身设置的所有扩展属性. USE AdventureWorks2008R2; GO SELECT objtype, objname, name, value FROM fn_listextendedproperty(default, default, default, default, default, def

SQL Server 查看实例配置情况的 2 方法

方法 1. sp_configure; execute sp_configure; 方法 2. sys.configurations select * from sys.configurations          order by name;          go

SQL SERVER查看索引使用情况

SELECT DISTINCT DB_NAME() AS N'db_name' , E.name AS N'schema_name' , OBJECT_NAME(a.object_id) AS N'table_name' , b.name N'index_name' , user_seeks N'seek' , user_scans N'scan' , last_user_seek , last_user_scan , rows FROM sys.dm_db_index_usage_stats