共计 1506 个字符,预计需要花费 4 分钟才能阅读完成。
这篇文章将为大家详细讲解有关删除 sqlserver 数据库日志和没有日志的数据库的恢复办法,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
一、删除数据库日志文件的方法
你曾经有在执行 SQL 的时候,数据库报事务日志已满,然后执行报错。然后纠结于怎么删除数据库日志,捣鼓半天吗,现在就提供两种删除日志文件的方法,希望能够帮到你!
方法一:手工操作 1. 数据库 - 右键 - 属性 - 选项 - 恢复模式 - 由完成切换成简单 2. 数据库 - 右键 - 任务 - 收缩 - 文件 - 由完成切换成简单 - 文件类型 - 日志 - 将文件收缩到
方法二:存储过程代替手工操作
复制代码 代码如下:
– 日志文件收缩至多少 M DECLARE @DBLogSise AS INT SET @DBLogSise=0 – 查询出数据库对应的日志文件名称 DECLARE @strDBName AS NVARCHAR(500) DECLARE @strLogName AS NVARCHAR(500) DECLARE @strSQL AS VARCHAR(1000) SELECT @strLogName=B.name, @strDBName=A.name FROM master.sys.databases AS A INNER JOIN sys.master_files AS B ON A.database_id = B.database_id WHERE A.database_id=DB_ID() SET @strSQL= – 设置数据库恢复模式为简单 ALTER DATABASE [ +@strDBName+] SET RECOVERY SIMPLE; – 收缩日志文件 DBCC SHRINKFILE (+@strLogName+ , +CONVERT(VARCHAR(20),@DBLogSise)+ – 恢复数据库还原模式为完整 ALTER DATABASE [+@strDBName+] SET RECOVERY FULL exec(@strSQL)
1. 在数据库中执行上面的存储过程 2. 然后再执行 EXEC dbo.usp_p_delDBLog @DBLogSise = 0 (收缩至多少 M)二、没有日志文件的数据库恢复方法
今天客户那边执行 SQL 报错,经查看是客户服务器数据库磁盘已被全部用完,日志文件达到 500GB 的程度,后来由于我的错误操作导致日志文件 (.ldf) 被删除,后来附加.mdf 文件老是说没有日志文件附加不成功,后来经过一番折腾终于解决了,下面分享一下!
操作步骤
1. 新建同名的数据库文件 2. 暂停 SQLSetver 服务 3. 将原先的 mdf 文件,覆盖新建的数据库,删除新数据库的 ldf 文件 4. 重新启动 SQLSetver 服务,这时看到的数据库是这个样子的,打不开
5. 执行以下 SQL 语句复制代码 代码如下:
–1. 设置为紧急状态 alter database 数据库名称 set emergency–2. 设置为单用户模式 alter database 数据库名称 set single_user–3. 检查并重建日志文件 dbcc checkdb(数据库名称 ,REPAIR_ALLOW_DATA_LOSS)–4. 第 3 步操作如果有错误提示,运行第 4 步,没有错误则跳过 dbcc checkdb(数据库名称 ,REPAIR_REBUILD)–5. 恢复成多用户模式 alter database 数据库名称 set multi_user
6. 至此会重新生成改库的日志文件,整个过程完成
或者也可以采用手动附加
关于删除 sqlserver 数据库日志和没有日志的数据库的恢复办法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。