代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
MSSQL
】
日志压缩----备份、分离、删除日志、附加文件
作者:
Dezai.CN
/ 发布于
2011/12/28
/
748
<div><span style="font-size: 8pt; background-color: rgb(238, 238, 221); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; ">*--调用示例</span></div> <p style="font-size: 13px; line-height: 19px; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 221); "><span style="font-size: 8pt; ">exec p_compdb 'FERMS_Iran' --*/ use master --注意:该存储过程要建在master数据库中 go if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_compdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[p_compdb] GO</span> <p style="font-size: 13px; line-height: 19px; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 221); "><span style="font-size: 8pt; ">create proc p_compdb @dbname sysname, --要压缩的数据库名 @bkdatabase bit=1, --在分离日志的步骤中,可能会损坏数据库,可以选择是否自动备份数据库 @bkfname nvarchar(260)='' --备份的文件名,如果不指定,自动备份到默认备份目录,备份文件名为:数据库名+日期时间 as</span> <p style="font-size: 13px; line-height: 19px; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 221); "><span style="font-size: 8pt; ">--1.清空日志 exec('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG')</span> <p style="font-size: 13px; line-height: 19px; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 221); "><span style="font-size: 8pt; ">--2.截断事务日志: exec('BACKUP LOG ['+@dbname+'] WITH NO_LOG')</span> <p style="font-size: 13px; line-height: 19px; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 221); "><span style="font-size: 8pt; ">--3.收缩数据库文件(如果不压缩,数据库的文件不会减小 exec('DBCC SHRINKDATABASE(['+@dbname+'])')</span> <p style="font-size: 13px; line-height: 19px; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 221); "><span style="font-size: 8pt; ">--4.设置自动收缩 exec('EXEC sp_dboption '''+@dbname+''',''autoshrink'',''TRUE''')</span> <p style="font-size: 13px; line-height: 19px; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 221); "><span style="font-size: 8pt; ">----后面的步骤有一定危险,请确保做好了数据库备份再选择下列的步骤 --5.分离数据库 if @bkdatabase=1 begin if isnull(@bkfname,'')='' set @bkfname=@dbname+'_'+convert(varchar,getdate(),112)+replace(convert(varchar,getdate(),108),':','')+'.bak' select 提示信息='备份数据库到SQL 默认备份目录,备份文件名:'+@bkfname exec('backup database ['+@dbname+'] to disk='''+@bkfname+'''') end</span> <p style="font-size: 13px; line-height: 19px; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 221); "><span style="font-size: 8pt; ">--进行分离处理 create table #t(fname nvarchar(260),type int) exec('insert into #t select filename,type=status&0x40 from ['+@dbname+']..sysfiles') exec('sp_detach_db '''+@dbname+'''')</span> <p style="font-size: 13px; line-height: 19px; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 221); "><span style="font-size: 8pt; ">--删除日志文件 declare @fname nvarchar(260),@s varchar(8000) declare tb cursor local for select fname from #t where type=64 open tb fetch next from tb into @fname while @@fetch_status=0 begin set @s='del "'+rtrim(@fname)+'"' exec master..xp_cmdshell @s,no_output fetch next from tb into @fname end close tb deallocate tb</span> <p style="font-size: 13px; line-height: 19px; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 221); "><span style="font-size: 8pt; ">--附加数据库 set @s='' declare tb cursor local for select fname from #t where type=0 open tb fetch next from tb into @fname while @@fetch_status=0 begin set @s=@s+','''+rtrim(@fname)+'''' fetch next from tb into @fname end close tb deallocate tb exec('sp_attach_single_file_db '''+@dbname+''''+@s) go</span>
试试其它关键字
同语言下
.
SQL查询 多列合并成一行用逗号隔开
.
查看存储过程修改时间,最近执行时间
.
设置手动批量删除数据库相关进程
.
获取某个表中特定字段的所有字符串形式
.
SQL 如何去除重复的字符串
.
怎么去掉一个字段中的重复数据
.
String 去除空格 回车 换行 水平制表符
.
SQL查询和替换含有回车,空格,TAB
.
SQL SERVER 查询每日新增用户数量、次留数量
.
判断两个字符串是否存在相同的内容
可能有用的
.
SQL查询 多列合并成一行用逗号隔开
.
查看存储过程修改时间,最近执行时间
.
设置手动批量删除数据库相关进程
.
获取某个表中特定字段的所有字符串形式
.
SQL 如何去除重复的字符串
.
怎么去掉一个字段中的重复数据
.
String 去除空格 回车 换行 水平制表符
.
SQL查询和替换含有回车,空格,TAB
.
SQL SERVER 查询每日新增用户数量、次留数量
.
判断两个字符串是否存在相同的内容
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3