sql表内存占用情况
IF OBJECT_ID('tempdb..#TablesSizes') IS NOT NULL DROP TABLE #TablesSizes CREATE TABLE #TablesSizes ( TableName sysname , Rows BIGINT , reserved VARCHAR(100) , data VARCHAR(100) , index_size VARCHAR(100) , unused VARCHAR(100) ) DECLARE @sql VARCHAR(MAX) SELECT @sql = COALESCE(@sql, '') + ' INSERT INTO #TablesSizes execute sp_spaceused ''' + QUOTENAME(TABLE_SCHEMA, '[]') + '.' + QUOTENAME(Table_Name, '[]') + '''' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' PRINT ( @SQL ) EXECUTE (@SQL) SELECT * FROM #TablesSizes ORDER BY Rows DESC
USE 你的库名; GO -- 数据库空间使用情况 EXEC sp_spaceused; -- 查下文件空间使用情况 SELECT file_id, name, [文件大小(MB)] = size / 128., [未使用空间(MB)] = (size - FILEPROPERTY(name, N'SpaceUsed')) / 128. FROM sys.database_files -- 表空间使用情况 DECLARE @tb_size TABLE( name sysname, rows int, size varchar(100), data_size varchar(100), INDEX_size varchar(100), unused_size varchar(100) ); INSERT @tb_size EXEC sp_msforeachtable ' sp_spaceused ''?'' ' SELECT * FROM @tb_size
https://social.msdn.microsoft.com/Forums/azure/pt-br/388f92e1-9a1e-497d-bde1-6664561fd44e/sql2008-mdf259912021422826228233838239064?forum=sqlserverzhchs
缩放方法2 :
操作命令:
现在我一个库ASFCORE的日志文件已经达到30G了,数据文件为1G,如果要收缩日志文件,则执行如下命令即可!
- 查看数据库的recovery_model_desc类型
SELECT NAME, recovery_model_desc FROM sys.databases
- 如果是FULL类型,修改为SIMPLE类型
ALTER DATABASE ASFCORE SET Recovery simple
- 收缩日志文件大小(单位是M)
DBCC SHRINKFILE (N'ASFCORE_log' , 10)
- 检查日志文件名称
USE ASFCORE
SELECT NAME, size FROM sys.database_files
- 恢复成FULL类型
ALTER DATABASE ASFCORE SET Recovery FULL
转载于:https://www.cnblogs.com/blackcore/archive/2010/12/27/1917911.html
执行文件清理
use [dbName]; go select * from sys.database_files --清理数据文件 DBCC SHRINKFILE (1) --清理日志文件 DBCC SHRINKFILE (2) Go
完整sql
USE[master] GO ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE --简单模式 GO USE 要清理的数据库名称 GO DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定 GO USE[master] GO ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL --还原为完全模式 GO