介绍
在进行 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 中的数据库信息、表信息、用户信息等等,这些信息可以帮助管理员更好地管理和维护数据库。