手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
摘要:复制代码代码如下:DECLARE@nameVARCHAR(25)DECLARE@SQLVARCHAR(1000)DECLARE@logidI...

复制代码 代码如下:

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+'

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

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

复制代码 代码如下:

-->Title:生成測試數據

-->Author:wufeng4552

-->Date :2009-09-15 08:56:03

declare @dbname nvarchar(20) --數據庫名稱

declare @sql nvarchar(max)

declare sysdbname cursor for select name from master.dbo.sysdatabases

open sysdbname

fetch next from sysdbname into @dbname

while @@fetch_status=0

begin

if (@dbname not in('xxx'))--不需要进行日志收缩的数据库名

begin

set @sql=--日誌文件ID

N' declare @logid int '+

N' use '+@dbname+

N' select @logid=fileid from sysfiles where right(ltrim(rtrim(filename)),3)=''ldf'''+

--截断事务日志

N' backup log '+@dbname+' with no_log '+

--收缩指定数据文件

N' dbcc shrinkfile(@logid)'

exec(@sql)

end

fetch next from sysdbname into @dbname

end

close sysdbname

deallocate sysdbname

【SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)】相关文章:

MS-SQL Server 2005 其中三个版本的比较

简单实用SQL脚本Part SQLServer 2005 链接服务器

用SQL语句实现随机查询数据并不显示错误数据的方法

教你快速掌握SQL Server中的“日志转移”

SQL Server 日志文件清理

SQL Server使用一个语句块批量插入多条记录的三种方法

详解SQL Server 2008工具SQL Server Profiler

在WIN7下安装和配置SQL Server 2005 Express Edition(精简版)

SQL Server 2000向SQL Server 2008 R2推送数据图文教程

Microsoft SQL Server 2008 基本安装说明

精品推荐
分类导航