900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > SQL Server 无日志文件附加数据库

SQL Server 无日志文件附加数据库

时间:2018-07-23 09:13:09

相关推荐

SQL Server 无日志文件附加数据库

1、新建一个同名数据库。

2、停止数据库服务,覆盖新建的数据库主文件(小技巧:最好放在同一个磁盘里面,把新建的数据库主文件删掉或移开,再把要恢复的数据库主文件剪切过去,这样就可以节省时间。)

3、启动数据库服务,数据库变为置疑或可疑状态。然后在查询分析器中运行:

alter database无日志文件的数据库名称set emergency

设置为紧急状态。

4、再运行:

alter database无日志文件的数据库名称set single_user

或者:

Sp_dboption '无日志文件的数据库名称', 'single user', 'true'

设置为单用户模式。

5、检查并重建日志文件,运行:

dbcc checkdb('无日志文件的数据库名称',REPAIR_ALLOW_DATA_LOSS)

这个时间比较长。耐心等待!如果有错误提示,再运行:

dbcc checkdb('无日志文件的数据库名称',REPAIR_REBUILD)

进行修复。如果没有错误,可以跳过。

6、恢复成多用户模式

alter database无日志文件的数据库名称set multi_user

或者:

Sp_dboption '无日志文件的数据库名称', 'single user', 'false'

刷新数据库,你就可以看到已经修复好的数据库了。

缩小 SQL Server 数据库日志文件

-12-20 07:05

-- 缩小SQL Server数据库日志文件

-- 修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小)

Set NoCount On

Declare @LogicalFileName sysname

Declare @MaxMinutes Int

Declare @NewSize Int

Use mm -- 要操作的数据库名

Select @LogicalFileName = 'mm_log' -- 日志文件名

Select @MaxMinutes = 10 -- Limit On Time allowed To Wrap Log.

Select @NewSize = 8 -- 你想设定的日志文件的大小(M)

-- Setup / initialize

Declare @OriginalSize Int

Select @OriginalSize = Size

From sysfiles

Where Name = @LogicalFileName

Select 'Original Size of ' + db_name() + ' LOG is ' +

CONVERT(Varchar(30),@OriginalSize) + ' 8K pages or ' +

CONVERT(Varchar(30),(@OriginalSize*8/1024)) + 'MB'

From sysfiles

Where Name = @LogicalFileName

Create Table DummyTrans (DummyColumn Char (8000) Not Null)

Declare @Counter Int,

@StartTime Datetime,

@TruncLog Varchar(255)

Select @StartTime = GETDATE(),

@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'

DBCC SHRINKFILE (@LogicalFileName, @NewSize)

Exec (@TruncLog)

-- Wrap the Log If necessary.

While @MaxMinutes > DATEDIFF(mi, @StartTime, GETDATE()) -- Time has Not expired

And @OriginalSize = (Select Size From sysfiles Where Name = @LogicalFileName)

And (@OriginalSize * 8 /1024) > @NewSize

Begin -- Outer Loop.

Select @Counter = 0

While ((@Counter < @OriginalSize / 16)

And (@Counter < 50000))

Begin -- Update

Insert DummyTrans Values ('Fill Log')

Delete DummyTrans

Select @Counter = @Counter + 1

End

Exec (@TruncLog)

End

Select 'Final Size of ' + db_name() + ' LOG is ' +

CONVERT(Varchar(30),Size) + ' 8K pages or ' +

CONVERT(Varchar(30),(Size*8/1024)) + 'MB'

From sysfiles

Where Name = @LogicalFileName

Drop Table DummyTrans

Set NoCount Off

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。