解决sqlserver数据库表空间不自动释放问题

在项目中遇到了sql server数据库经过频繁地删减数据后,查询变慢的问题。

我把数据导到另一个库中,发现查询就很快。

查了下原因,根本原因是删除数据并不释放表空间,日志文件太过巨大的原因。

网上查了查,解决方案如下:

 

第一步, 在收缩前先查看日志的大小:
SELECT *
FROM sysfiles
WHERE name LIKE '%LOG%'
GO
 
第二步, 把数据库的恢复模式设成”简单”:
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE
GO
 
第三步, 运行checkpoint指令, 把dirty page写进数据库:
CHECKPOINT
GO
  
第四步, 截断日志: 
BACKUP LOG 库名 WITH NO_LOG
GO
 
第五步, 记录一下日志名为下一步做准备:
 
SELECT Name
FROM sysfiles
WHERE name LIKE '%LOG'
GO
  
第六步, 收缩日志文件, 把不用的空间释放给操作系统:
DBCC SHRINKFILE (文件名, 所需大小)
GO
 
第七步, 验证一下日志大小是否达到所需大小了:
SELECT *
FROM sysfiles
WHERE name LIKE '%LOG%'
GO

第八步,将模式设置回去
ALTER DATABASE [数据库名] SET RECOVERY FULL WITH NO_WAIT 
GO
ALTER DATABASE [数据库名] SET RECOVERY FULL
GO


--查询指定数据库的日志文件名称 
USE [数据库名] 
GO 
SELECT name FROM SYS.database_files WHERE type_desc='LOG'



 后续步骤:
 1)查看你的主要数据库, 看看日志增长是否失控;
 2)查看上面的代码, 并进行必要修改和测试以适应你的数据库要求;
 3)定期收缩数据库 ----(注: 慎用!! 不建议用在production环境里.)
 4)继续监控数据库大小和服务器上的可用空间大小. 

  

 

释放表空间:

DBCC SHRINKDATABASE (库名,所需大小);

 

转载于:https://www.cnblogs.com/King-JJ/p/7098051.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET 中的 GridView 控件可以与 SQL Server 数据库进行连接,实现数据的展示和操作。以下是连接 GridView 和 SQL Server 数据库的步骤: 1. 在 ASP.NET 网页中,首先需要在代码前导处引入 System.Data.SqlClient 命名空间,以便可以使用与 SQL Server 数据库相关的类和方法。 2. 在 ASP.NET 网页中将 GridView 控件添加到页面上,并设置其属性。例如,设置 AutoGenerateColumns 属性为 true,可以自动根据数据源生成列;设置 DataSourceID 属性为数据源的 ID。 3. 创建连接字符串,用于连接到 SQL Server 数据库。连接字符串中包含数据库的服务器名称、身份验证方式、数据库名称等信息。可以使用 Configuration Manager 类的 ConnectionStrings 属性来获取连接字符串。 4. 在代码中创建 SqlConnection 对象,并将连接字符串作为参数传递给 SqlConnection 构造函数。然后,打开连接,并创建 SQL 查询或存储过程。 5. 创建 SqlCommand 对象,用于执行 SQL 查询或存储过程。将 SqlCommand 对象的 CommandText 设置为 SQL 查询或存储过程的名称。 6. 创建 SqlDataAdapter 对象,并将 SqlCommand 对象作为参数传递给 SqlDataAdapter 构造函数。然后,使用 SqlDataAdapter 的 Fill 方法将结果集填充到 DataSet 或 DataTable 中。 7. 将 DataSet 或 DataTable 对象设置为 GridView 控件的数据源。可以使用 GridView 的 DataSource 属性绑定到 DataSet 或 DataTable,然后调用 GridView 的 DataBind 方法进行数据绑定。 8. 最后,关闭数据库连接,释放资源。可以使用 SqlConnection 对象的 Close 方法来关闭连接。 通过以上步骤,我们可以实现 ASP.NET GridView 控件与 SQL Server 数据库的连接和数据展示。关键是要正确设置连接字符串、创建 SqlConnection、SqlCommand 和 SqlDataAdapter 对象,并使用合适的数据源进行绑定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值