SQL Server DBA日常检查常用SQL

常用SQL查询操作

在SQL Server数据库管理中,作为DBA需要经常进行数据库的日常检查与维护,主要是针对数据库性能、安全及数据完整性等各个方面进行监控和维护。本文将会介绍一些常见的SQL查询语句,以便于DBA在日常工作中可以更加有效的进行数据库管理。

系统相关查询

以下是一些常用的系统查询语句,用于查询数据库内部的系统信息。

查询当前数据库名称:

SELECT DB_NAME() as '当前数据库名称'

查询SQL Server数据库版本和当前登录用户:

SELECT @@VERSION as 'SQL Server版本', SUSER_SNAME() as '当前用户'

查询所有数据库的名称和创建时间:

SELECT Name as '数据库名称', Create_Date as '创建时间'

FROM sys.databases

存储过程和函数相关查询

存储过程和函数是SQL Server中非常常用的工具,以下是一些查询语句,用于查询存储过程和函数信息。

查询数据库中所有存储过程的名称:

SELECT name as '存储过程名称'

FROM sys.procedures

查询存储过程的定义:

SELECT OBJECT_DEFINITION(OBJECT_ID('存储过程名称')) as '存储过程定义'

查询数据库中的所有函数:

SELECT name as '函数名称'

FROM sys.objects

WHERE type_desc LIKE '%FUNCTION%'

表相关查询

以下是一些查询语句,用于查询数据库内部的表信息。

查询数据库中所有表的名称:

SELECT name as '表名称'

FROM sys.objects

WHERE type_desc = 'USER_TABLE'

查询指定表的所有字段信息:

SELECT COLUMN_NAME as '列名称', DATA_TYPE as '数据类型', CHARACTER_MAXIMUM_LENGTH as '最大长度'

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_NAME = '表名称'

索引相关查询

以下是一些查询语句,用于查询数据库内部的索引信息。

查询指定表的所有索引信息:

SELECT name as '索引名称', type_desc as '索引类型', create_date as '创建时间'

FROM sys.indexes

WHERE object_id = OBJECT_ID('表名')

查询索引的详细信息:

SELECT OBJECT_NAME(OBJECT_ID) as '表名', name as '索引名称',

INDEXPROPERTY(OBJECT_ID,'索引名称','IndexDepth') as '树形深度',

INDEXPROPERTY(OBJECT_ID,'索引名称','IndexFillFactor') as '填充因子',

INDEXPROPERTY(OBJECT_ID,'索引名称','IndexType') as '索引类型',

INDEXPROPERTY(OBJECT_ID,'索引名称','IsUnique') as '是否唯一'

FROM sys.indexes

WHERE OBJECT_ID = OBJECT_ID('表名')

日志相关查询

以下是一些查询语句,用于查询数据库的日志信息。

查询最近一次日志备份的时间:

SELECT TOP 1 backup_finish_date as '日志备份时间'

FROM msdb..backupset

WHERE type = 'L'

ORDER BY backup_finish_date DESC

查询数据库中最近一次的活动事务:

SELECT name as '事务名称', begin_time as '开始时间'

FROM sys.dm_tran_active_transactions

WHERE database_id = DB_ID('数据库名称')

安全相关查询

以下是一些查询语句,用于查询数据库的安全信息。

查询所有用户:

SELECT name as '登录名'

FROM sys.server_principals

WHERE type = 'S'

查询指定用户所属的角色和权限:

SELECT ISNULL(rp.name,'public') as '角色名称',

dp.permission_name as '权限名称'

FROM sys.database_principals AS dp

LEFT OUTER JOIN sys.database_role_members AS drm ON dp.principal_id = drm.member_principal_id

LEFT OUTER JOIN sys.database_principals AS rp ON drm.role_principal_id = rp.principal_id

LEFT OUTER JOIN sys.database_permissions AS p ON dp.principal_id = p.grantee_principal_id

WHERE dp.name = '登录名'

总结

本文介绍了常规SQL Server DBA在日常工作中的常用查询语句,可以方便DBA进行数据库的监控和维护,提高工作效率。

数据库标签