sqlserver 2005 无日志附加

本文提供了一套详细的步骤来解决 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 2008 中附加数据库时,如果没有日志文件(.ldf),可以通过以下方法解决: ### 使用 `CREATE DATABASE` 命令手动创建日志文件 可以使用 `ALTER DATABASE ... ADD LOG FILE` 命令来手动添加缺失的日志文件。具体步骤如下: ```sql ALTER DATABASE dbname ADD LOG FILE ( NAME = N'yourdatabasename_log', FILENAME = N'yourlogfilepath.ldf', SIZE = 8 MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10% ); ``` 此命令将为指定的数据库添加一个新的日志文件,并设置其初始大小、最大大小和增长方式[^5]。 ### 使用分离与附加操作重建日志文件 如果数据库已经存在但缺少日志文件,则可以尝试以下步骤: 1. **分离数据库**: 在 SQL Server Management Studio (SSMS) 中右键点击目标数据库,选择“任务” -> “分离”。确保勾选“删除连接”选项以完成分离操作。 2. **手动删除旧日志文件**: 找到数据库对应的 `.mdf` 和 `.ldf` 文件,在文件系统中手动删除旧的日志文件(.ldf)。 3. **重新附加数据库**: 在 SSMS 中选择“数据库” -> 右键 -> “附加”,然后选择 `.mdf` 文件进行附加。此时,SQL Server 将自动创建一个新的日志文件[^4]。 ### 其他注意事项 - **权限问题**:确保 SQL Server 服务账户对新创建的日志文件路径具有写入权限。 - **路径一致性**:新的日志文件路径应与原数据库配置保持一致,避免因路径不匹配导致附加失败。 - **兼容性检查**:确认所使用的 SQL Server 版本支持当前的操作模式,例如 SQL Server 2008 R2 对某些功能的支持可能有所不同[^1]。 ### 示例代码 以下是完整的 T-SQL 示例,用于创建一个新的日志文件并附加数据库: ```sql -- 创建新的日志文件 ALTER DATABASE MyDatabase ADD LOG FILE ( NAME = N'MyDatabase_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDatabase_log.ldf', SIZE = 8 MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10% ); -- 设置数据库在线状态 ALTER DATABASE MyDatabase SET ONLINE; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值