USE [master]
GO
/****** Object: StoredProcedure [dbo].[pro_Shrink_Log] Script Date: 2019/8/16 16:56:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: xlc
-- Create date: 2019.08.16
-- Description: 收缩数据库日志
-- =============================================
ALTER PROCEDURE [dbo].[pro_Shrink_Log]
@dbName NVARCHAR(200)
AS
BEGIN
SET NOCOUNT ON;
 
   
DECLARE @sql NVARCHAR(200);
DECLARE @logname NVARCHAR(200);
DECLARE @dbRecovery TINYINT;
-- 获取日志文件名
-- N 将内容转为unicode 中文也不会出现乱码 -- 获取日志文件名
SET @sql= N'USE [' + @dbName +'];' + Char(13) + Char(10) +
'SELECT TOP 1 @logname = NAME FROM SYS.DATABASE_FILES WHERE TYPE = 1'; EXECUTE sp_executesql @sql, N'@logname NVARCHAR(200) output',@logname output; IF @logname IS NULL
BEGIN
PRINT '未找到日志文件:' + @sql;
RETURN;
END -- 获取当前恢复模式 SET @sql = N'USE [' + @dbName + N'];' + Char(13) + Char(10) +
'SELECT TOP 1 @dbRecovery = recovery_model FROM sys.databases where name =''' + @dbName + ''''; EXECUTE sp_executesql @sql, N'@dbRecovery TINYINT output',@dbRecovery output; -- 1、设置模式为简单模式
    SET @sql = N'USE MASTER;'+Char(13) + Char(10) +'ALTER DATABASE [' + @dbName + N'] SET RECOVERY SIMPLE WITH NO_WAIT';
    EXECUTE sp_executesql @sql;
    SET @sql = N'ALTER DATABASE [' + @dbName + N'] SET RECOVERY SIMPLE';
    EXECUTE sp_executesql @sql;     -- 2、收缩文件
    SET @sql = N'USE [' + @dbName + N'];' + Char(13) + Char(10) +
        'DBCC SHRINKFILE (N''' + @logname + ''', 1, TRUNCATEONLY)';
    EXECUTE sp_executesql @sql;   -- 3、设置模式为完全
IF @dbRecovery = 1
begin
SET @sql = N'USE MASTER;'+Char(13) + Char(10) +'ALTER DATABASE [' + @dbName + N'] SET RECOVERY FULL WITH NO_WAIT';
EXECUTE sp_executesql @sql;
SET @sql = N'ALTER DATABASE [' + @dbName + N'] SET RECOVERY FULL';
     EXECUTE sp_executesql @sql;
    end
    PRINT '数据库:' + @dbName + ' 日志文件:' + @logname + ' 收缩完成';
END

建议将存储过程放在 master中执行。

执行方式:

EXEC pro_Shrink_Log test

执行结果:

参考:https://blog.csdn.net/youbl/article/details/8990169

《SQL Server 2008 R2》 收缩数据库日志文件的更多相关文章

  1. sql server 2008 r2 清除数据库日志

    USE [master] GO ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE [数据库名] SET ...

  2. SQL Server 2008 R2 清空数据库中ldf日志文件

    /************************************************************ * Sql Server 2008 R2 清空数据库中ldf日志文件 * 将 ...

  3. SQL Server 2008 R2 主从数据库同步

    一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2    DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...

  4. SQL Server 2008 R2 主从数据库同步设置

    一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2    DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...

  5. SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件

    原文:SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件 从2005开始,就引入了"数据库邮件"功能.并且取代SQLMail.原有SQLMail ...

  6. SQL Server 2008 R2 附加数据库 “尝试打开或创建物理文件 拒绝访问”的解决办法

    其实是来自一篇SQL Server 2005同样错误的帖子,不过试了在SQL Server 2008 R2下面也有效,记录一下. 解决方法: 在所有程序—Microsoft SQL Server 20 ...

  7. SQL Server 2008 R2 开启数据库远程连接

    今天要测试一个.net系统~因为配置的数据库是SQL Server~我就不得不安装SQL Server 2008 R2~现在我们就一起来看看SQL Server 2008 R2是如何打开远程连接端口1 ...

  8. SQL SERVER 2008 R2 还原数据库3154错误

    1.SQL SERVER 2008 在还原数据库时,会报错. 提示错误:"备份集中的数据库备份与现有的 '***' 数据库不同.RESTORE DATABASE 正在异常终止. (Micro ...

  9. SQL Server 2008 中收缩数据库(DUMP,TRANSACTION,TRAN,无效,语法错误)

    从SQL SERVER 2008 开始,我们已经不能再用以前 DUMP TRAN 数据库名 WITH NO_LOG 的这种方式来收缩数据库,但是,可以用另外一种替代的方法,SQL语句如下: ALTER ...

  10. sql server 2008中清除数据库日志的sql语句

    第一步: Use  数据库名 Select NAME,size From sys.database_files 将“数据库名”改为需要清除日志的数据库名字,点击“执行”查询出需要清除的日志名称:**_ ...

随机推荐

  1. 7.Python网络编程_多线程共享全局变量问题

    Python多线程支持全局变量的共享操作,但是它存在很多问题,先来看以下程序,该程序理论上执行完毕后全局变量g_num的值应该是2000000,但是在实际运行中,结果不足理论值 import thre ...

  2. Onenote添加代码

    使用Onenote做笔记的时候,是没有直接插入代码的,但是如果可以插入的话很方便. 这个是我找的一个参考,照这个来就行. 参考链接: https://www.cnblogs.com/two-peanu ...

  3. Mybatis的Java API(八)

    使用mybatis的主要Java接口就是SqlSession.可以通过这个接口来执行命令,获取映射器和事务管理. SqlSession是由SqlSessionFactory实例创建,SqlSessio ...

  4. 剑指Offer-21.栈的压入、弹出序列(C++/Java)

    题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...

  5. boostrap --- 弹窗modal的使用

    <input id="btntext" type="button" value="添加文本组件" data-toggle=" ...

  6. git pull --rebase的理解

    在使用git的过程中经常需要使用到git pull命令,在更新远端代码的同时如果与本地代码产生冲突了, 那么冲突的文件中就出现了需要手动合并的部分,而git pull --rebase不同的地方则是当 ...

  7. 【转】np.random.random()函数 参数用法以及numpy.random系列函数大全

    转自:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.random((1000, 20) ...

  8. Vue.js 源码分析(一) 代码结构

    关于Vue vue是一个兴起的前端js库,是一个精简的MVVM.MVVM模式是由经典的软件架构MVC衍生来的,当View(视图层)变化时,会自动更新到ViewModel(视图模型),反之亦然,View ...

  9. 你真的了解nginx重定向URI?-rewrite和alias指令

    未经允许不得转载!最近发现有博主转载我的文章,并没有跟我打招呼,也没有注明出处!!!! 熟悉Nginx的同学都知道Nginx可以用来做负载均衡和反向代理,非常好用.做前后端分离也是非常的方便. 今天我 ...

  10. .Net轻松处理亿级数据--clickhouse及可视化界面安装介绍

    该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前言 我是在17年就听说过Clickhouse,那时还未接触过亿数据的运算,那时我在的小公司对于千万数据的解决方案还停留在分库分表,最好的也是使用 ...