如何使用 MSSQL 查看数据库信息?

介绍

在进行 MSSQL 数据库维护和管理时,经常需要查看数据库的相关信息,如数据库大小、数据库日志文件的使用情况等等。在 MSSQL 中,可以通过执行 SQL 语句来查询这些信息,本文将介绍如何使用 MSSQL 查询数据库信息。

查询数据库大小

查询数据库大小是经常需要进行的操作,可以通过以下 SQL 语句来查询数据库的大小:

USE {database_name};

EXEC sp_spaceused;

其中,{database_name} 是要查询的数据库名称。执行上述 SQL 语句后,将返回如下结果:

database_name      database_size     unallocated space

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

{database_name} xxx MB xxx MB

其中,database_size 表示数据库当前占用的空间大小,unallocated space 则表示该数据库中未分配给任何对象的空间大小。sp_spaceused 还可以用于查询某张表的大小:

USE {database_name};

EXEC sp_spaceused '{table_name}';

其中,{table_name} 是要查询的表名称。

查询数据库日志文件的使用情况

在 MSSQL 中,每个数据库都有一个对应的日志文件,用于记录该数据库的所有操作。以下 SQL 语句可以查询某个数据库的日志文件大小和使用情况:

USE {database_name};

DBCC SQLPERF(LOGSPACE);

执行上述 SQL 语句后,将返回如下结果:

database_name      log_size_mb log_space_used_percent status

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

{database_name} xxx MB xx% xx

其中,log_size_mb 表示该数据库的日志文件的大小,log_space_used_percent 则表示该数据库的日志文件已经使用的空间百分比,status 则表示该数据库的日志文件状态。

查询表的信息

以下 SQL 语句可以查询某张表的信息:

USE {database_name};

EXEC sp_help '{table_name}';

执行上述 SQL 语句后,将返回如下结果:

Column_name Type            Computed  Length Prec  Scale Nullable  TrimTrailingBlanks   FixedLenNullInSource Collation

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

{column1_name} {column1_type} no {column1_length} {column1_prec} {column1_scale} {column1_nullable} {column1_trim} {column1_fixedlen} {column1_collation}

{column2_name} {column2_type} no {column2_length} {column2_prec} {column2_scale} {column2_nullable} {column2_trim} {column2_fixedlen} {column2_collation}

...

Table_name : {table_name}

Columns : {num_columns}

PrimaryKey : {primary_key}

Unique Key : {unique_key}

Indexes : {num_indexes}

Triggers : {num_triggers}

Check Constraints : {num_check_constraints}

Foreign Key Constraints: {num_foreign_key_constraints}

Referenced Foreign Key Constraints: {num_referenced_foreign_key_constraints}

其中,{column_name}{type}{computed}{length}{prec}{scale}{nullable}{trimtrailingblanks}{fixedlennullinsource}{collation} 列分别表示该表某个列的名称、类型、是否计算列、长度、精度、小数位数、是否允许 NULL、是否修剪后导空格、是否固定长度和排序方式等。另外,{table_name}{num_columns}{primary_key}{unique_key}{num_indexes}{num_triggers}{num_check_constraints}{num_foreign_key_constraints}{num_referenced_foreign_key_constraints} 分别表示该表的名称、列数、主键、唯一键、索引数、触发器数、检查约束数、外键约束数以及其他约束数。

查询数据库用户和权限信息

以下 SQL 语句可以查询某个数据库中的所有用户,并列出每个用户拥有的权限:

USE {database_name};

SELECT

DP1.name AS DatabaseRoleName,

isnull (DP2.name, 'No members') AS DatabaseUserName

FROM sys.database_role_members AS DRM

RIGHT OUTER JOIN sys.database_principals AS DP1

ON DRM.role_principal_id = DP1.principal_id

LEFT OUTER JOIN sys.database_principals AS DP2

ON DRM.member_principal_id = DP2.principal_id

WHERE DP1.type = 'R'

ORDER BY DP1.name;

执行上述 SQL 语句后,将返回数据库中所有用户的名称以及他们拥有的角色。

除此之外,以下 SQL 语句可以查询某个用户拥有的权限:

USE {database_name};

EXEC sp_helprotect NULL, '{user_name}';

其中,{user_name} 是要查询的用户名称。执行上述 SQL 语句后,将返回该用户拥有的所有权限。

总结

通过上述 SQL 语句,可以方便地查询 MSSQL 中的数据库信息、表信息、用户信息等等,这些信息可以帮助管理员更好地管理和维护数据库。

数据库标签