當前位置:首頁 » 編程語言 » sql查文件大小
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql查文件大小

發布時間: 2022-08-08 05:53:29

『壹』 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語句查詢日誌文件大小

日誌文件的話 去系統看不就知道了么

日誌文件和 數據文件不一樣 不是一個原理。

直接 日誌文件就可以了