sql表内存占用情况,并进行缩放

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

  

  

原文地址:https://www.cnblogs.com/lhlong/p/11114514.html