mssql sqlserver 安全检查—磁盘空间检查


摘要:
经常对sqlserver进行安全检查,可以避免sqlserver遭遇性能问题,可以避免sqlserver出现异常,
下文着重讲述sqlserver安全检查之”磁盘空间检查”,具体方法如下所示:



一、磁盘空间检查的目的

如果数据库所在的服务器磁盘空间不足,则会影响数据库的各项操作, 用户数据无法插入,无法进行查询操作
无法进行日志备份操作,sql脚本时常运行错误,因为无法创建临时表…



二、磁盘空间检查涉及事项

2.1 每个日志文件的大小
2.2 每个数据文件的大小
2.3 每个数据文件中都有可用空间
2.4 每个驱动器上有数据库文件的可用空间
2.5 每个驱动器上的可用空间都有备份文件
2.6 日志文件增长
2.7 预估数据和日志文件的增长率



三、磁盘空间检查方法

3.1 日志空间快照获取方法,
设置一个sql作业定时对服务器下的所有数据库的日志空间进行快照,获取相应的信息,具体脚本如下所示:

	   IF (NOT EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'dbo' 
                 AND  TABLE_NAME = 'sqlLog_diskSpace'))
 
BEGIN
	CREATE TABLE [dbo].sqlLog_diskSpace(
		[DatabaseName] [VARCHAR](250) NULL,
		[LogSizeMB] [DECIMAL](38, 0) NULL,
		[LogSpaceUsed] [DECIMAL](38, 0) NULL,
		[LogStatus] [TINYINT] NULL,
		[CaptureDate] [DATETIME2](7) default getdate()
	);

END
 
CREATE TABLE #tmp (
	DatabaseName VARCHAR(100),
	LogSizeMB DECIMAL(10,2),
	LogSpaceUsed DECIMAL(10,2),
	LogStatus VARCHAR(1)
	);
 
INSERT INTO #tmp EXEC('dbcc sqlperf(logspace)');
 
INSERT INTO sqlLog_diskSpace 
	(DatabaseName, LogSizeMB, LogSpaceUsed, LogStatus)
	SELECT DatabaseName, LogSizeMB, LogSpaceUsed, LogStatus
	FROM #tmp;
 
 go
 
DROP TABLE #tmp;
go
	

使用以上的作业快照信息,我们可以监控日志文件剩余空间,何时该备份日志文件,或调整日志文件的大小

mssql_sqlserver_日志空间快照捕捉

mssql_sqlserver_日志空间快照捕捉


——————————————————————————————–
3.2 获取各数据库文件的大小

  SELECT 
    [file_id] AS [文件编号],
    [type] AS [文件类型],
    substring([physical_name],1,1) AS [所属驱动器],
    [name] AS [逻辑文件名],
    [physical_name] AS [物理文件名],
    CAST([size] as DECIMAL(38,0))/128. AS [文件尺寸MB], 
    CAST(FILEPROPERTY([name],'SpaceUsed') AS DECIMAL(38,0))/128. AS [已用尺寸MB], 
    (CAST([size] AS DECIMAL(38,0))/128) - (CAST(FILEPROPERTY([name],'SpaceUsed') AS DECIMAL(38,0))/128.) AS [空闲尺寸MB],
    [max_size] AS [最大尺寸],
    [is_percent_growth] AS [是否自动增长],
    [growth] AS [增长率],
    SYSDATETIME() AS [当前系统时间]
FROM sys.database_files;

对数据库文件大小的检查方法,每个月都必须检查数据文件的大小和使用空间,判断驱动器的空间是否符合系统要求,符合系统的增长情况,
也通过每个月的数据文件检查,判断数据文件增长是否合理,并在运维系统中对磁盘空间的增长设定相应的警报值。

mssql_sqlserver_数据文件快照

mssql_sqlserver_数据文件快照