‘壹’ sql server 查看库和日志大小
--查看数据文件的使用和增长情况
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
‘贰’ 如何通过SQL命令查看数据库的文件大小
要查的表名')
获取数据库表名和字段
sqlserver中各个系统表的作用
sysaltfiles 主数据库 保存数据库的文件
syscharsets 主数据库 字符集与排序顺序
sysconfigures 主数据库 配置选项
syscurconfigs 主数据库 当前配置选项
sysdatabases 主数据库 服务器中的数据库
syslanguages 主数据库 语言
syslogins 主数据库 登陆帐号信息
sysoledbusers 主数据库 链接服务器登陆信息
sysprocesses 主数据库 进程
sysremotelogins主数据库 远程登录帐号
syscolumns 每个数据库 列
sysconstrains 每个数据库 限制
sysfilegroups 每个数据库 文件组
sysfiles 每个数据库 文件
sysforeignkeys 每个数据库 外部关键字
sysindexs 每个数据库 索引
sysmenbers 每个数据库 角色成员
sysobjects 每个数据库 所有数据库对象
syspermissions 每个数据库 权限
systypes 每个数据库 用户定义数据类型
select 列名=name from syscolumns where id=object_id(N'表名'
--读取指定表的所有列名
select name from syscolumns where id=(select max(id) from sysobjects where xtype=' and name='u'u'--读取库中的所有表名
select name from sysobjects where xtype='
‘叁’ 教您如何查看Sql Server数据文件
在Sql Server中可以能过以下的方法查询出磁盘空间的使用情况及Sql Server数据文件及日志文件的大小及使用利用率:
1、查询各个磁盘分区的剩余空间:
Exec master.dbo.xp_fixeddrives
2、查询Sql Server数据文件及日志文件的相关信息(包括文件组、当前文件大小、文件最大值、文件增长设置、文件逻辑名、文件路径等)
select * from [数据库名].[dbo].[sysfiles]
转换文件大小单位为MB:
select name, convert(float,size) * (8192.0/1024.0)/1024. from [数据库名].dbo.sysfiles
3、查询当前数据库的磁盘使用情况:
Exec sp_spaceused
4、查询数据库服务器各数据库日志文件的大小及利用率
‘肆’ 如何用t-sql语句查看sql数据库文件的大小
sp_helpdb
谢谢
‘伍’ 如何查询sql2008 数据库大小
首先:要打开microsoft
sql
server
management
studio并进入对象资源管理器
其次:在展开的第一级节点中找到"数据库"节点.并在此节点(数据库)上右击鼠标.选择附加数据库选项.接着会出现附加数据库对话框,
再次:在附加数据库对话框中点击"添加"按钮,会出现"定位数据库文件"对话框.选择你要附加的数据库文件.再点击"确定"按钮.再次点下"确定"按钮,就可以了.
最后再到你的"对象资源管理器"中查看就可以了.
‘陆’ 怎么看sql server数据库文件大小
下面有两个SQL语句可以达到在SQL Server 2005/2008压缩指定数据库文件和日志的大小的效果:
1、DBCC SHRINKDATABASE (Transact-SQL)
收缩指定数据库中的数据文件和日志文件的大小。
语法
DBCC SHRINKDATABASE
( 'database_name' | database_id | 0
[ ,target_percent ]
[ , { NOTRUNCATE | TRUNCATEONLY } ]
)
[ WITH NO_INFOMSGS ]
参数
'database_name' | database_id | 0 要收缩的数据库的名称或 ID。如果指定 0,则使用当前数据库。
target_percent 数据库收缩后的数据库文件中所需的剩余可用空间百分比。
NOTRUNCATE 通过将已分配的页从文件末尾移动到文件前面的未分配页来压缩数据文件中的数据。target_percent 是可选参数。 文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。因此,指定 NOTRUNCATE 时,数据库看起来未收缩。 NOTRUNCATE 只适用于数据文件。日志文件不受影响。
TRUNCATEONLY 将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动。数据文件只收缩到最近分配的区。如果与 TRUNCATEONLY 一起指定,将忽略 target_percent。 TRUNCATEONLY 只适用于数据文件。日志文件不受影响。
WITH NO_INFOMSGS 取消严重级别从 0 到 10 的所有信息性消息。
‘柒’ C# 如何查看sql数据库大小
直接用一个Sql语句,就OK了,这是项目中复制出来的,你自己可以改一改
string sql = "select [fileid], [groupid], [size], [maxsize], [growth], [status], [perf], [name], [filename] from [sysfiles] Order by [fileid]";
DataTable dt = null;
List<ChartModelPie> list = new List<ChartModelPie>();
List<ChartModelPie> list1 = new List<ChartModelPie>();
double size = 0;
double userSize = 0;
try
{
//数据库
dt = db.ExecuteQuery(sql);
foreach (DataRow dr in dt.Rows)
{
cm = new ChartModelPie();
double f=1000*1204;
cm.Size = Math.Round((double.Parse(dr["size"].ToString())*8)/(f), 3);
if (dr["name"].ToString().Contains("_log"))
{
cm.home = "LDF文件";
cm.filename = dr["filename"].ToString().Substring(0, 2);
}
else
{
cm.home = "MDF文件";
cm.filename = dr["filename"].ToString().Substring(0, 2);
}
//cm.filename = dr["filename"].ToString();
//cm.home = dr["name"].ToString();
list1.Add(cm);
}
//硬盘
DAL.WMI.WMI w = new DAL.WMI.WMI("127.0.0.1", "", "");
DAL.WMI.WMI.PartitionInfo pi;
int num = w.EnumPartionInfoByDisk(out pi, list1[0].filename);
if (num > 0)
{
//已用
cm = new ChartModelPie();
cm.Size = Math.Round(Convert.ToDouble(pi.size - pi.FreeSpace) , 2);
cm.home = "磁盘已用";
list.Add(cm);
//空闲
cm = new ChartModelPie();
cm.Size = Math.Round(Convert.ToDouble(pi.FreeSpace), 2);
cm.home = "磁盘剩余";
list.Add(cm);
size = list[0].Size + list[1].Size;//总大小
userSize = list[0].Size;
}
ll.Add(list);
//其他已用大小
cm = new ChartModelPie();
cm.home = "其他已用";
cm.filename = "其他已用";
cm.Size = userSize - list1[0].Size - list1[1].Size;
list1.Add(cm);
//其他
cm = new ChartModelPie();
cm.home = "可用";
cm.filename = "可用";
cm.Size = size - list1[0].Size - list1[1].Size - list1[2].Size;
list1.Add(cm);
ll.Add(list1);
‘捌’ 如何使用SQL语句查询数据库及表的空间容量
--1、查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
--2、查看表空间物理文件的名称及大小
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
3.查看所有表空间使用情况
select
b.file_id 文件ID号,
b.tablespace_name 表空间名,
b.bytes/1024/1024||'M'字节数,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M' 已使用,
sum(nvl(a.bytes,0))/1024/1024||'M' 剩余空间,
round(100 - sum(nvl(a.bytes,0))/(b.bytes)*100,2)|| '%' 占用百分比
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id;
总有一款适合你!
‘玖’ sql怎么样获取一个文件的大小,即这个文件所暂用字节数
是在sql server中吗?
如果是。使用下面的试试:
--查看c:\temp.log文件的大小
exec master.dbo.xp_cmdshell 'for /f %i in ("c:\temp.log") do @echo %~zi'
‘拾’ oracle使用sql语句查询日志文件大小
日志文件的话 去系统看不就知道了么
日志文件和 数据文件不一样 不是一个原理。
直接 日志文件就可以了