`
pavel
  • 浏览: 927921 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL语句实现Sql Server 2005日志收缩(批量)

阅读更多

DECLARE @name VARCHAR(25)--数据库名  
DECLARE @SQL VARCHAR(1000)  
DECLARE @logid INT  
DECLARE sysdatabase_name CURSOR
    FOR SELECT  name FROM master.dbo.sysdatabases  
OPEN sysdatabase_name  
FETCH NEXT FROM sysdatabase_name INTO @name  
WHILE @@FETCH_STATUS = 0  
BEGIN  
  
   IF ( @name NOT IN ('xxx')) --不需要进行日志收缩的数据库名  
   BEGIN  
     SET @SQL =' --声明        DECLARE @logid INT  
                --使用数据库   USE   ' + @name+'
  --right函数:从字符串右边返回指定数目的字符  
  --rtrim函数:取消字符右边的空格  
              SELECT @logid = fileid FROM sysfiles WHERE RIGHT(rtrim(filename),3) = ''ldf''
                  --截断事务日志  
                  BACKUP LOG ' + @name+' WITH NO_LOG  
                  --收缩指定数据文件
                  DBCC SHRINKFILE (@logid) '  
     EXEC(@SQL)  
   END  
   FETCH NEXT FROM sysdatabase_name INTO @name  
END  
  
CLOSE sysdatabase_name  
DEALLOCATE sysdatabase_name  


NO_LOG   |   TRUNCATE_ONLY  
    
  无须备份复制日志即删除不活动的日志部分,并且截断日志。该选项会释放空间。因为并不保存日志备份,所以没有必要指定备份设备。NO_LOG   和   TRUNCATE_ONLY   是同义的。  
    
  使用   NO_LOG   或   TRUNCATE_ONLY   备份日志后,记录在日志中的更改不可恢复。为了恢复,请立即执行   BACKUP   DATABASE

删除数据或事务日志文件将从数据库删除该文件。仅当文件上不存在已有的数据或事务日志信息时才可能从数据库删除文件;文件必须完全为空后才能删除。若要将数据从一个数据文件迁移到同一文件组中的其它文件中,请使用   DBCC   SHRINKFILE   语句,并指定   EMPTYFILE   子句。SQL   Server   即不再允许将数据置于文件上,从而通过使用   ALTER   DATABASE   语句或   SQL   Server   企业管理器内的属性页,使之能够删除

--压缩日志及数据库文件大小  
    
  /*--特别注意  
  请按步骤进行,未进行前面的步骤,请不要做后面的步骤  
  否则可能损坏你的数据库.  
  --*/  
    
  1.清空日志  
  DUMP     TRANSACTION     库名     WITH     NO_LOG          
    
  2.截断事务日志:  
  BACKUP   LOG   数据库名   WITH   NO_LOG  
    
  3.收缩数据库文件(如果不压缩,数据库的文件不会减小  
  企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件  
  --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了  
  --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了  
    
  也可以用SQL语句来完成  
  --收缩数据库  
  DBCC   SHRINKDATABASE(客户资料)  
    
  --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select   *   from   sysfiles  
  DBCC   SHRINKFILE(1)  
    
  4.为了最大化的缩小日志文件(如果是sql   7.0,这步只能在查询分析器中进行)  
  a.分离数据库:  
  企业管理器--服务器--数据库--右键--分离数据库  
    
  b.在我的电脑中删除LOG文件  
    
  c.附加数据库:  
  企业管理器--服务器--数据库--右键--附加数据库  
    
  此法将生成新的LOG,大小只有500多K  
    
  或用代码:    
  下面的示例分离   pubs,然后将   pubs   中的一个文件附加到当前服务器。  
    
  a.分离  
  EXEC   sp_detach_db   @dbname   =   'pubs'  
    
  b.删除日志文件  
    
  c.再附加  
  EXEC   sp_attach_single_file_db   @dbname   =   'pubs',    
        @physname   =   'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\pubs.mdf'  
    
  5.为了以后能自动收缩,做如下设置:  
  企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"  
    
  --SQL语句设置方式:  
  EXEC   sp_dboption   '数据库名',   'autoshrink',   'TRUE'  
    
  6.如果想以后不让它日志增长得太大  
  企业管理器--服务器--右键数据库--属性--事务日志  
  --将文件增长限制为xM(x是你允许的最大数据文件大小)  
    
  --SQL语句的设置方式:  
  alter   database   数据库名   modify   file(name=逻辑文件名,maxsize=20)  

分享到:
评论

相关推荐

    SQL语句实现跨Sql server数据库操作实例

    ### SQL语句实现跨SQL Server数据库操作实例 #### 背景介绍 在日常的数据库管理与开发工作中,经常会遇到需要在不同的SQL Server实例之间进行数据交换的情况。这些操作包括但不限于查询不同数据库中的数据、将数据...

    SQL Server2005基本方法和语句

    ### SQL Server 2005 基本方法与语句详解 在数据库管理与开发领域,SQL Server 2005 是一个重要的工具,它提供了丰富的功能来满足数据存储、管理和查询的需求。本文将深入解析 SQL Server 2005 的基本方法与常用...

    用SQL语句j查SQLServer的表结构

    用SQL语句j查SQLServer的表结构 用SQL语句j查SQLServer的表结构

    SQL Server 2005 定时执行SQL语句的方法

    SQL SERVER 2005有定时任务,你可以启动一下。不过要想更加直观的控制,直接写一个程序,定时执行你的存储过程。 1、设置“SQL Server 代理”(SQL Server Agent)服务随系统启动 –我的电脑–控制面板–管理工具–...

    非常好用的SQL Server 抓取SQL语句工具HOOK

    非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK

    sqlserver自动生成sql语句工具sqlserver转oracle

    本篇文章将详细探讨如何利用工具实现SQL Server自动生成SQL语句并转换到Oracle。 首先,标题中的"sqlserver自动生成sql语句工具"指的是可以分析SQL Server数据库结构和数据,自动生成对应的SQL创建语句的软件。这种...

    Oracle Sql语句转换成Mysql Sql语句

    OracleSqlConvert4MysqlSqlTool.java这个源码工具,根据描述,应该是实现了自动读取Oracle SQL语句,分析其结构,并根据MySQL的语法规则进行转换,然后将转换后的SQL语句保存到指定的目标文件中。这个工具简化了手动...

    SQL语句实现查询SQL Server内存使用状况

    SELECT type,--Clerk的类型 sum(virtual_memory_reserved_kb)as vm_Reserved_kb,--保留的内存 sum(virtual_memory_committed_kb)as vm_Committed_kb,--提交的内存 sum(awe_allocated_kb)as awe_Allocated_kb,--开启...

    SQL Server 2005 格式化sql语句

    在SQL Server 2005中,格式化SQL语句是一项重要的任务,它能帮助数据库管理员和开发人员更好地理解和维护复杂的查询。一个清晰、整洁的SQL语句不仅可以提高代码的可读性,也有助于减少错误和提高工作效率。本文将...

    SQLServer表数据转化为sql语句(表数据搬运,一键快捷导出为insert语句,方便导入到其它库)

    功能: 根据表名、where条件,生成导出数据的SQL语句。(包含insert语句。结果可一键执行,利于数据导出、导入) 参数: @tableName nvarchar(100) --表名 ,@sqlWhere nvarchar(500) --where条件,如'a=''123'' '(传...

    sql server 2005 使用笔记之常用函数和经典sql语句

    在SQL Server 2005中,数据库管理和数据查询是其核心功能,而函数和SQL语句则是实现这些功能的重要工具。这篇笔记主要探讨的是SQL Server 2005中的常用函数以及一些经典的SQL语句,这对于数据库管理员和开发人员来说...

    SQL语句格式化工具

    SQL语句格式化工具是一种非常实用的软件,主要用于帮助程序员和数据库管理员整理和美化他们的SQL代码,使其更易于阅读和维护。在SQL Server等数据库管理系统中,编写和修改SQL脚本是日常工作中不可或缺的一部分,而...

    SQL SERVER 数据自动生成SQL语句

    SQL Server 数据自动生成SQL语句是一项实用的功能,它极大地简化了数据迁移或备份的过程。这个功能使得用户能够快速地根据数据库中的表结构和已有数据,生成相应的SQL插入语句,以便将这些数据移植到其他数据库系统...

    批量执行SQL server 脚本工具

    自动读取指定目录sql文件,科批量执行SQL server 脚本,fw4.0

    sqlserver 批量执行sql文件

    sqlserver 批量执行指定文件夹下面的sql文件。 非常快捷方便,使用于不同类型数据库之间的数据迁移

    SqlServer2005 打开 SqlServer2008 mdf文件

    Sql Server 2005 打开 Sql Server 2008 mdf 文件数据库转换是指将 Sql Server 2008 中的数据库文件(mdf 文件)转换为 Sql Server 2005 可以识别的格式,以便在 Sql Server 2005 中使用。这种转换过程需要使用 Sql ...

    sqlserver表结构导出SQL语句

    导出一个库中的所有表的结构,包括表说明及字段说明

    Excel根据表格,批量生成sqlserver语句 ,生成建表语句,自行到数据库中执行

    标题提到的“Excel根据表格,批量生成sqlserver语句,生成建表语句,自行到数据库中执行”,就是一种利用Excel宏自动化生成SQL Server建表语句的方法。这种方法适用于已有数据结构清晰的Excel表格,通过特定的规则...

    使用SQL语句批量更新数据.rar

    本资料“使用SQL语句批量更新数据.rar”将深入探讨如何高效地使用SQL批量更新数据库中的记录。 一、SQL批量更新基础 1. UPDATE语句:批量更新的基础是SQL的UPDATE语句。基本语法如下: ```sql UPDATE 表名 SET ...

    SQL2005日志收缩方法

    您可能感兴趣的文章:有用的SQL语句(删除重复记录,收缩日志)SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)Sqlserver 2000/2005/2008 的收缩日志方法和清理日志方法收缩数据库日志文件的方法(仅适用...

Global site tag (gtag.js) - Google Analytics