SQL Server 2008无日志文件附加数据库
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 数据库日志文件
2010-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
SQL Server 2008无日志文件附加数据库的更多相关文章
- SQL Server 2005无日志文件附加数据库
公司网站运营两年多了,日志文件超级大,在重装系统的时候,为了省事,就没有备份日志文件,而且是没有分离就把日志文件给删掉了(下次一定要记得先分离再删日志文件).结果造成数据库怎么都附加不上.出现错误. ...
- SQL Server 2008收缩日志文件--dbcc shrinkfile参数说明
原文:SQL Server 2008收缩日志文件--dbcc shrinkfile参数说明 DBCC SHRINKFILE 收缩相关数据库的指定数据文件或日志文件大小. 语法 DBCC SHRINKF ...
- SQL Server 无日志文件附加数据库
CREATE DATABASE DBname ON (FILENAME = 'D:\SalesData\DBname_data.mdf') FOR ATTACH_REBUILD_LOG ; GO 简单 ...
- Sql Server 2008 清理日志文件
Use LingZhong Select NAME,size From sys.database_files ALTER DATABASE LingZhong SET RECOVERY SIMPLE ...
- SQL Server 2008 收缩日志 清空删除大日志文件 转载
SQL Server 2008 收缩日志 清空删除大日志文件 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)Ba ...
- SQL Server 2008下日志清理方法 2
SQL Server 2008下日志清理方法 (2011-07-14 10:30:45) 转自 http://blog.sina.com.cn/s/blog_4bdd3d0b0100wfvq.html ...
- SQL Server无法收缩日志文件 2 因为逻辑日志文件的总数不能少于 2问题
SQL Server无法收缩日志文件 2 因为逻辑日志文件的总数不能少于 2问题 最近服务器执行收缩日志文件大小的job老是报错 我所用的一个批量收缩日志脚本 USE [master] GO /*** ...
- SQL Server 2008 2005删除或压缩数据库日志的方法
由于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间.由于主要是做OLAP,所以数据库本身不会有大变动,所以日志也就 ...
- SQL Server 2008 R2 下如何清理数据库日志文件
废话不多说,直接上代码,清理后日志文件为1M USE [master] GO ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT GO ALT ...
随机推荐
- git问题 next fetch will store in remotes/origin
项目在git的下无法查找到需要的Branch
- UVa12063 Zeros and Ones
神坑 1竟然还要取模 在后面填数多好的 #include<cstdio> #include<cstring> #include<cstdlib> #include& ...
- c#基础语言编程-按值类型和引用类型传递参数
引言 在介绍传递参数介绍前,请明白参数类型和传递方式是不同的.传递方式分为按值类型和引用类型传递参数.参数类型有值类型和引用类型,这个和C++是不同的.这里的传递方式对应c++中的深复制和浅复制. 两 ...
- Android中RelativeLayout的字符水平(垂直居中)对齐
[背景] 此处Android中显示出来的TextView中的内容,水平中间不对其. 想要实现水平居中对齐. [折腾过程] 1.搜: android RelativeLayout horizontal ...
- shell从函数文件里调用函数
碰到一个shell中函数调用的小问题,记录一下. shell中函数有三种调用方式,一种是在文件前面定义函数,然后在以下直接调用:一种是通过加载shell,在shell中直接调用:第三种是将函数写入文件 ...
- Java语言基础(三)
Java语言基础(三) 一. 补码 (1).之所以有补码是因为要考虑成本 就是造计算机的成本 (2).下面让我们分析一下补码 以四位补码为例 <1> 高位是符号位,它决定其是正数还是 ...
- cygwin下用mysql c api连接数据库详解
一.典型错误: 错误1: 命令: gcc -I /usr/include/mysql/ -L /lib/ -lmysqlclient main.c 错误: /tmp/ccT0KqUQ.o:main.c ...
- [转] linux下查看文件编码及修改编码
如果无法识别文件编码,可能是文件中已有乱码,此时需要去掉乱码 查看文件编码 在Linux中查看文件编码可以通过以下几种方式: 1.在Vim中可以直接查看文件编码 :set fileencoding 即 ...
- ICMP协议
1. ICMP简介: ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制报文协议,协议号为1,网络层协议. 它是TCP/IP协议族的一个子协议,用于在IP主机 ...
- Image路径问题
BitmapImage image = new BitmapImage(new Uri("/Pictures/log.png", UriKind.Relative)); evaIm ...