问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql server 查看库和日志大小

发布网友 发布时间:2022-04-11 17:54

我来回答

1个回答

热心网友 时间:2022-04-11 19:23

--查看数据文件的使用和增长情况

SET NOCOUNT ON

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

DECLARE @dbname VARCHAR(200),

@sql VARCHAR(8000)

SET @sql = ''

SET @dbname = ''

CREATE TABLE #TMP_ServerDrive(

[DriveName] VARCHAR(5) PRIMARY KEY,

[FreeDriveSpace] BIGINT)

INSERT INTO #TMP_ServerDrive

EXEC master..xp_fixeddrives

CREATE TABLE #TMP_LogSpace (

[DBName] VARCHAR(200) NOT NULL PRIMARY KEY,

[LogSize] MONEY NOT NULL,

[LogPercentUsed] MONEY NOT NULL,

[LogStatus] INT NOT NULL)

SELECT @sql = 'DBCC SQLPERF (LOGSPACE) WITH NO_INFOMSGS'

INSERT INTO #TMP_LogSpace

EXEC(@sql)

CREATE TABLE #TMP_DBFileInfo (

[DBName] VARCHAR(200),

[FileLogicalName] VARCHAR(200),

[FileID] INT NOT NULL,

[Filename] VARCHAR(250) NOT NULL,

[Filegroup] VARCHAR(100) NOT NULL,

[FileCurrentSize] BIGINT NOT NULL,

[FileMaxSize] VARCHAR(50) NOT NULL,

[FileGrowth] VARCHAR(50) NOT NULL,

[FileUsage] VARCHAR(50) NOT NULL,

[FileGrowthSize] BIGINT NOT NULL)

CREATE TABLE #TMP_DB (

[DBName] VARCHAR(200) PRIMARY KEY

)

INSERT INTO #TMP_DB

SELECT DBName = LTRIM(RTRIM(name))

FROM master.dbo.sysdatabases

WHERE category IN ('0', '1','16')

AND DATABASEPROPERTYEX(name, 'status') = 'ONLINE'

-- AND NAME =@dbname

ORDER BY name

CREATE TABLE #TMP_DataSpace (

[DBName] VARCHAR(200) NULL,

[Fileid] INT NOT NULL,

[FileGroup] INT NOT NULL,

[TotalExtents] MONEY NOT NULL,

[UsedExtents] MONEY NOT NULL,

[FileLogicalName] sysname NOT NULL,

[Filename] VARCHAR(1000) NOT NULL

)

SELECT @dbname = MIN(dbname) FROM #TMP_DB

WHILE @dbname IS NOT NULL

BEGIN

SET @sql = 'USE ' + @dbname + '

INSERT INTO #TMP_DBFileInfo (

[DBName],

[FileLogicalName],

[FileID],

[Filename],

[Filegroup],

[FileCurrentSize],

[FileMaxSize],

[FileGrowth],

[FileUsage],

[FileGrowthSize])

SELECT DBName = ''' + @dbname + ''',

FileLogicalName = SF.name,

FileID = SF.fileid,

Filename = SF.filename,

Filegroup = ISNULL(filegroup_name(SF.groupid),''''),

FileCurrentSize = (SF.size * 8)/1024,

FileMaxSize = CASE SF.maxsize WHEN -1 THEN N''Unlimited''

ELSE CONVERT(VARCHAR(15), (CAST(SF.maxsize AS BIGINT) * 8)/1024) + N'' MB'' END,

FileGrowth = (case SF.status & 0x100000 when 0x100000 then

convert(varchar(3), SF.growth) + N'' %''

else

convert(varchar(15), ((CAST(SF.growth AS BIGINT) * 8)/1024)) + N'' MB'' end),

FileUsage = (case WHEN SF.status & 0x40 = 0x40 then ''Log'' else ''Data'' end),

FileGrowthSize = CASE SF.status & 0x100000 WHEN 0x100000 THEN

((((CAST(SF.size AS BIGINT) * 8)/1024)* SF.growth)/100) + ((CAST(SF.size AS BIGINT) * 8)/1024)

ELSE

((CAST(SF.size AS BIGINT) * 8)/1024) + ((CAST(SF.growth AS BIGINT) * 8)/1024)

END

FROM sysfiles SF

ORDER BY SF.fileid'

EXEC(@sql)

SET @sql = 'USE ' + @dbname + '

DBCC SHOWFILESTATS WITH NO_INFOMSGS'

INSERT INTO #TMP_DataSpace (

[Fileid],

[FileGroup],

[TotalExtents],

[UsedExtents],

[FileLogicalName],

[Filename])

EXEC (@sql)

UPDATE #TMP_DataSpace

SET [DBName] = @dbname

WHERE ISNULL([DBName],'') = ''

SELECT @dbname = MIN(dbname) FROM #TMP_DB WHERE dbname > @dbname

END

SELECT 'DBName' = DFI.DBName,

'FileLogicalName' = DFI.FileLogicalName,

'Filename' = DFI.[Filename],

'FileMBSize' = DFI.FileCurrentSize,

'FileGrowth' = DFI.FileGrowth,

'FileMBGrowth' = DFI.FileGrowthSize,

'DriveName' = SD.DriveName,

'DriveMBEmpty' = SD.FreeDriveSpace,

'FileMBUsed' = CAST(ISNULL(((DSP.UsedExtents * 64.00) / 1024), LSP.LogSize *(LSP.LogPercentUsed/100)) AS BIGINT),

'FileMBEmpty' = DFI.FileCurrentSize - CAST(ISNULL(((DSP.UsedExtents * 64.00) / 1024), LSP.LogSize *(LSP.LogPercentUsed/100)) AS BIGINT),

'FilePercentEmpty' = (CAST((DFI.FileCurrentSize - CAST(ISNULL(((DSP.UsedExtents * 64.00) / 1024), LSP.LogSize *(LSP.LogPercentUsed/100)) AS BIGINT)) AS MONEY) / CAST(CASE WHEN ISNULL(DFI.FileCurrentSize,0) = 0 THEN 1 ELSE DFI.FileCurrentSize END AS MONEY)) * 100

FROM #TMP_DBFileInfo DFI

LEFT OUTER JOIN #TMP_ServerDrive SD

ON LEFT(LTRIM(RTRIM(DFI.[FileName])),1) = LTRIM(RTRIM(SD.DriveName))

LEFT OUTER JOIN #TMP_DataSpace DSP

ON LTRIM(RTRIM(DSP.[Filename])) = LTRIM(RTRIM(DFI.[Filename]))

LEFT OUTER JOIN #TMP_LogSpace LSP

ON LtRIM(RTRIM(LSP.DBName)) = LTRIM(RTRIM(DFI.DBName))

DROP TABLE #TMP_ServerDrive

DROP TABLE #TMP_LogSpace

DROP TABLE #TMP_DBFileInfo

DROP TABLE #TMP_DataSpace

DROP TABLE #TMP_DB
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
急求高人解答 ···管理类的问题 ···!!!急急急···我会在线等... ...如果基层管理幅度为8,高层管理人员管理幅度为3,则该公司中层管理人员... ...发生化学变化的实质是( )A.分子间隔发生变化B.物质状态发生改变C... 下列变化不能说明发生了化学变化的是( )A.变化时有电子的得失或共用电... 下列描述正确的是( )A.固态物质的分子间无间隔B.液态物质的分子不断运动... 原来微信打开这个功能,能够看到马路上的街景,涨知识了! ...百度帐号被人在异地登录了,问题是没有任何人知道我的密码啊?而且也... 医疗事故纠纷和医疗损害纠纷的区别是什么 医疗纠纷与医疗事故的定义是什么? 医疗事故纠纷是指什么的 C盘log文件特别大,怎么删除? 谁可以帮写一个VB监控log文件或txt文件的代码? 求批处理监控本地路径下的日志文件大小变化 如何使log文件达到指定大小就转储 SQL数据库的连接转移 断开所有连接sybase数据库的方法 如果kill掉用户进程,如何恢复数据库连接 如何清除sqlserver2005里的其中一个数据库的连接 ADO.NET Entity Framework的开发工具 ado.net 中,dataAdapter的update方法是怎么用的? vs2010 ado.net实体数据模型 视图导入不进去 关于asp.net c# 的 ado.net ef的操作问题。 EF的删除数据库操作语句怎么写? C# ADO.net 查询数据,并更新其中的一个值,改怎么写? ADO.NET EF架构中,调用存储过程的问题 使用Command 对象对数据库的操作(ADO.NET),这些代码怎么修改? ado.net中dataView怎样修改行中的值? 不好意思,是初学者,请问数据库查询结果为空的话,该如何给变量赋值。 怎样从前台获取Boolean类型的值为null sql语句 怎么设置条件为空和不为空时2种查询方法 SQL 语句 把一个值为0的字段改为空('null') 存储过程调用,如何写LOG文件 13、linux上怎么动态监控一个文件的内容变化? sql数据库日志文件变很大 logstash 怎么监控nginx日志 SQL Server聚集索引或非聚集索引在什么情况下才能使用 MS Sql Server 根据某列分组求小计,且其他行不会被合并。 sql中cube和rollup是什么意思,看概念根本就看不懂呀!!! sql中什么次序函数是基于列的结果集的行返回顺序数 用SQL语句怎样查询某个值介于两个字段值之间的记录? sql我想取110-200 和300-400之间的数字,语句怎么写? 怎么用sql命令计算100到200之间的奇数的和 sql语句如何查询两个值之间的差? sql:数据递增到一个值,再递减到一个值,循环。如何选取相邻两个最大值或最小值之间数据个数? SQL怎么取得某个栏位中符号之间的数据? SQL如何把表中一个范围的数据提取处理 急救!!!用SQL语句怎么求两个数据之间的差? 请教一个SQL(获取表中两个字段的内容相同的数据),在线等 如何在SQL2000表里两条数据之间插入一条数据!如图!语句怎么写? sql server2000 中的怎样查询指定行之间的数据 (数据库查询)你好,我想请问一下SQL,怎样从一张表取2种不同条件的列值,让他们并列在同一张表。