如何控制SQL Server日志?
我有一个程序不停执行一个存储过程扫描数据库!存储过程中会启动事务,但未必会有数据更改,存储过程如下:
CREATE PROCEDURE sp_GetDataBatch
@CallMode CHAR(1),
@MobileType INT=0
AS
SET XACT_ABORT ON
BEGIN TRANSACTION --启动事务
DECLARE @Time DATETIME
SET @Time=GetDate()
IF @CallMode='M'
BEGIN
IF @MobileType=0
BEGIN
SELECT TOP 50 InfoID,BussType,DesAddr,Subject,Content,CustName,CustTitle,AddFile,DeptName,PersonalID,MessageID,FeeRate,
dbo.MobileType(DesAddr) MobileType FROM vOutMobile
WHERE preCalloutTime<=@Time AND DateDiff(minute,ExpireTime,@Time)<0
IF @@ROWCOUNT>0
UPDATE DataPool SET CurrStatu=-1,CalloutTime=@Time WHERE InfoID IN (SELECT TOP 50 InfoID FROM vOutMobile
WHERE preCalloutTime<=@Time AND DateDiff(minute,ExpireTime,@Time)<0)
END
ELSE
BEGIN
SELECT TOP 50 InfoID,BussType,DesAddr,Subject,Content,CustName,CustTitle,AddFile,DeptName,PersonalID,MessageID,FeeRate,
@MobileType MobileType FROM vOutMobile
WHERE preCalloutTime<=@Time AND DateDiff(minute,ExpireTime,@Time)<0 AND dbo.MobileType(DesAddr)=@MobileType
IF @@ROWCOUNT>0
UPDATE DataPool SET CurrStatu=-1,CalloutTime=@Time WHERE InfoID IN (SELECT TOP 50 InfoID FROM vOutMobile
WHERE preCalloutTime<=@Time AND DateDiff(minute,ExpireTime,@Time)<0 AND dbo.MobileType(DesAddr)=@MobileType)
END
END
ELSE
BEGIN
SELECT TOP 50 InfoID,BussType,DesAddr,Subject,Content,CustName,CustTitle,AddFile,DeptName,PersonalID,MessageID,FeeRate
FROM vOutEmail WHERE preCalloutTime<=@Time AND DateDiff(minute,ExpireTime,@Time)<0
IF @@ROWCOUNT>0
UPDATE DataPool SET CurrStatu=-1,CalloutTime=@Time WHERE InfoID IN (SELECT TOP 50 InfoID FROM vOutEmail
WHERE preCalloutTime<=@Time AND DateDiff(minute,ExpireTime,@Time)<0)
END
COMMIT TRANSACTION --提交事务
结果,该数据库的日志在几分钟之内就涨到了1G,没有数据的时候也是如此!没多久硬盘就满了,不知道有何办法解决!