手机
当前位置:查字典教程网 >编程开发 >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日志收缩(批量)】相关文章:

未公开的SQL Server口令的加密函数

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

如何在SQL Server 2005数据库中导入SQL Server 2008的数据

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

SqlServer 2005 T-SQL Query 学习笔记(1)

SQL Server 2005删除日志文件的几种方法小结

SQL Server 2005 镜像构建手册(sql2005数据库同步镜像方案)

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

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

SQL server 2008 数据安全(备份和恢复数据库)

精品推荐
分类导航