`
pavel
  • 浏览: 930884 次
  • 性别: 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语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)

    本篇文章将介绍如何使用SQL语句批量收缩SQL Server 2000和SQL Server 2005的数据库日志。 首先,我们来看一下SQL Server 2000和SQL Server 2005的批量日志收缩脚本: ```sql DECLARE @name VARCHAR(25) DECLARE @...

    用SQL语句j查SQLServer的表结构

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

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

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

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

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

    SQLServer数据库表中数据导出成SQL语句工具

    数据和结构的SQL语句会被清晰地呈现,用户可以选择性地复制粘贴到新的SQL Server环境中执行,从而实现数据的导入。 5. **安全性与最佳实践**:在使用这类工具时,应注意数据敏感性和安全问题。确保只导出需要的数据...

    SQLServer动态SQL语句的用法

    SQL Server 动态 SQL 语句的用法 SQL Server 中的动态 SQL 语句是一种灵活的查询方式,它可以根据不同的情况生成不同的 SQL 语句。动态 SQL 语句可以用来实现复杂的业务逻辑,提高查询效率和灵活性。 普通 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 Server环境中,批量执行SQL脚本文件是数据库管理员和开发者日常工作中常见的一项任务。本文将深入探讨如何在.NET环境中高效地实现这一功能,并对比使用sqlcmd工具的方法。以下是一些关键知识点: 1. **SQL ...

    sqlserver 批量创建表

    在SQL Server中,批量创建表是一项常见的数据库管理任务,尤其在构建数据库结构或者进行数据迁移时。本场景中,我们关注的是如何利用SQL Server 2008来实现这一目标。这里有两个关键文件:`SQL批量插入数据.sql` 和 ...

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

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

    SQLServer实用SQL语句大全

    《SQLServer实用SQL语句大全》是一本涵盖了SQL Server数据库管理与开发的全面指南,旨在帮助用户深入理解和熟练运用SQL语言。此书共分为15个章节,每一章都精心设计,理论结合实践,旨在让读者能够从基础到高级逐步...

    sql server 2005日志清理

    SQL Server 2005日志清理是数据库管理员在维护数据库健康和性能时的重要环节。这个过程涉及到对数据库事务日志(Transaction Log)的管理,它记录了所有数据库的更改操作,是数据库恢复机制的关键部分。本文将深入...

    批量执行SQL server 脚本工具

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

    SqlServer2005 打开 SqlServer2008 mdf文件

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

    sqlserver表结构导出SQL语句

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

Global site tag (gtag.js) - Google Analytics