文件管理 · 2022年8月25日

sqlserver日志文件丢失|sqlserver 2012日志满了导致数据库挂起恢复如何解决

『壹』 如何清除SQLserver 日志

SQLSERVER的数据库日志占用很大的空间,下面提供三种方法用于清除无用的数据库日志文件方法一: 1、打开查询分析器,输入命令 BACKUP LOG database_name WITH NO_LOG 2、再打开企业管理器–右键要压缩的数据库–所有任务–收缩数据库–收缩文件–选择日志文件–在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了。 方法二: 设置检查点,自动截断日志 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大 1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server–>SQL Server组–>双击打开你的服务器–>双击打开数据库目录–>选择你的数据库名称(如用户数据库cwbase1)–>然后点击右键选择属性–>选择选项–>在故障还原的模式中选择“简单”,然后按确定保存 2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定 3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据 方法三:通过SQL收缩日志 把代码复制到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可 SET NOCOUNT ON DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT USE tablename — 要操作的数据库名 SELECT @LogicalFileName = 'tablename_log', — 日志文件名 @MaxMinutes = 10, — Limit on time allowed to wrap log. @NewSize = 1 — 你想设定的日志文件的大小(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的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。1、操作前请断开所有数据库连接。 2、分离数据库 分离数据库:企业管理器->服务器->数据库->cwbase1->右键->分离数据库 分离后,cwbase1数据库被删除,但保留了数据文件和日志文件 3、删除log物理文件 删除LOG物理文件,然后附加数据库: 企业管理器->服务器->数据库->右键->附加数据库 此法生成新的log,大小只有500多k。 注意:建议使用第一种方法。操作前请确保所有操作员都已经推出系统,断开数据库的连接。 以上操作前,请务必做好数据备份!1.sql server 2005 清除日志语句 mp transaction 数据库名称 with no_log backup log 数据库名称 with no_log dbcc shrinkdatabase(数据库名称)

『贰』 日志文件被删除,如何彻底删除程序

有时候我们安装在 Windows 系统中的应用程序因为出错而无法卸载,需要我们手动将其删除,应该如何做呢?此时我们应该先从注册表中将应用程序的注册信息删除,然后再从资源管理器中手动删除应用程序的安装文件夹。那么,这个注册表项是哪里呢?可能不少人都知道,是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall。但是,当我们把 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 中的所有注册表项都浏览过一遍后,却发现在控制面板中的“添加删除程序”列表中的应用程序好像并没有全部显示在这里,例如我们常用的 Office 系列就找不到相应的注册表项。这是怎么回事呢?原来,除了 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 之外,还有其它两个注册表项用来保存已注册的应用程序信息,它们就是 HKEY_CLASSES_ROOT\Installer\Procts 和 HKEY_CURRENT_USER\Software\Microsoft\Installer\Procts。如果我们把这三个注册表项定义的全部应用程序都加在一起,就是我们在“添加删除程序”列表中看到的所有程序了。HKEY_CLASSES_ROOT\Installer\Procts 和 HKEY_CURRENT_USER\Software\Microsoft\Installer\Procts 主要用来保存那些基于 Windows Installer 安装的应用程序,例如 Office;而 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 则主要用来保存那些基于其它安装程序的应用程序,例如常见的基于 InstallShield 安装的应用程序。因此,如果我们需要手动删除应用软件时,如果在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 中找不到相应的注册表项,请务必再检查一下 HKEY_CLASSES_ROOT\Installer\Procts 和 HKEY_CURRENT_USER\Software\Microsoft\Installer\Procts。

『叁』 sqlserver 2012日志满了导致数据库挂起恢复,如何解决

1、分离数据库2、将日志改名,使数据库找不到日志文件。3、附加,不带日志文件。附加的窗口中取消日志文件的选定。这样,就会生成一个新的日志文件。

『肆』 SQLserver的日志文件问题

处理方法/*–特别注意请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.–*/–下面的所有库名都指你要处理的数据库的库名1.清空日志DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志:BACKUP LOG 库名 WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器–右键你要压缩的数据库–所有任务–收缩数据库–收缩文件–选择日志文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了–选择数据文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成–收缩数据库DBCC SHRINKDATABASE(库名)–收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器–服务器–数据库–右键–分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器–服务器–数据库–右键–附加数据库此法将生成新的LOG,大小只有500多K或用代码: 下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。a.分离EXEC sp_detach_db @dbname = '库名'b.删除日志文件c.再附加EXEC sp_attach_single_file_db @dbname = '库名', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'5.为了以后能自动收缩,做如下设置:企业管理器–服务器–右键数据库–属性–选项–选择"自动收缩"–SQL语句设置方式:EXEC sp_dboption '库名', 'autoshrink', 'TRUE'6.如果想以后不让它日志增长得太大企业管理器–服务器–右键数据库–属性–事务日志–将文件增长限制为xM(x是你允许的最大数据文件大小)–SQL语句的设置方式:alter database 库名 modify file(name=逻辑文件名,maxsize=20)

『伍』 请问sqlserver的日志文件到底保存了些什么内容

保存了你对数据的所有操作,可用于数据备份和恢复。

『陆』 sql server 数据库误删,有日志文件如何还原

服务器没当可以用备份日志,服务器如果当掉了…或者换了服务器有ldf不同日志备份…其实也就是你的数据库信息必须在master里

『柒』 sqlserver的日志文件有哪些

日志是SQL Server自身抄用来回滚袭事务用的,有第三方的日志读取工具可以从日志文件中读取之前的操作信息。比如:误删了一条记录怎样通过日志文件使之恢复?这个如果不用第三方工具而只使用SQL Server本身的功能有两种方法第一种比较简单,在操作数据库的时候,首先用begin tran语句显式的标记一个事务,然后删除数据,如果确定需要恢复,则执行rollback tran语句,删除操作就会被回滚。使用begin tran语句标记事务,如果不需要回滚,则使用commit tran进行提交,提交后就不能再回滚了。第二种方法是通过还原数据库的方式,大致步骤如下:1.首先数据库的恢复模式必须是“完全”或者“大容量日志”模式2.在删除数据之前对数据库进行了完全备份3.删除数据后,要对数据库日志进行备份4.还原删除数据前最近一次的完全备份5.还原删除数据后的日志备份,使用stopat选项指定还原点为删除数据前那一时刻。这种方法一般用在大批量误操作后的恢复,比较麻烦,推荐楼主熟悉备份还原以后再尝试。

『捌』 SQL不小心删除日志文后如何恢复SQLSERVER服务

如果你之前的日志文件没有删除,把服务停止,把原来的日志文件拷贝回来然后重启服务。

『玖』 如何恢复丢失的SQL Server日志文件

在实际操作中SQLServer日志文件丢失是一件令人十分头疼的事情,以下的文章主要是针对这一问题给出的答案,以下就是正文的主要内容描述。 一、 概述 在应用系统中,数据库往往是最核心的部分,一旦数据库毁坏或损坏,将会带来巨大的损失,所以数据库的管理越来越重要。我们在做数据库管理与维护工作中,不可避免会出现各种各样的错误,本文针对数据库的SQLServer日志文件丢失时如何利用MDF文件恢复数据库的方法进行了研究。 二、 数据库的恢复 当数据库的主数据MDF文件完好无损时,在丢失了LDF文件的情况下,如何利用MDF文件恢复数据库?我们把SQL Server的日志文件分为两类:一类是无活动事务的日志,另一类是含活动事务的日志,根据不同的日志,采取不同的方法来恢复数据库。 1. 无活动事务的日志恢复 无活动事务的日志丢失时,我们很容易利用MDF文件直接恢复数据库,具体方法如下: ①.分离被质疑的数据库,可用企业管理器中的"分离数据库工具",或者用存储过程sp_detach_db分离数据库; ②利用MDF文件附加数据库生成新的日志文件,可用企业管理器中的"附加数据库"的工具,或者用存储过程sp_attach_single_file_db附加数据库。 如果数据库的日志文件中含有活动事务,利用此方法就不能SQLServer日志文件丢失的恢复数据库。 2. 含活动事务的日志恢复 含有活动事务的日志丢失时,利用上述方法就会出现"数据库和日志文件不符合,不能附加数据库"。对于这种情况下,我们采用如下方法: ①新建同名数据库AAA,并设它为紧急模式 停止SQL Server服务器; 把数据库主数据MDF文件移走; 启SQL Server服务器,新建一个同名的数据库AAA; 停止SQL Server服务器,把移走的MDF文件再覆盖回来; 启动SQL Server服务器,把AAA设为紧急模式,不过默认情况下,系统表是不能随便修改的,必须首先设置一下使其能被修改,运行以下语句即可: Use MasterGosp_configure ’allow updates’,1reconfigure with overrideGo 接着运行以下语句,把AAA数据库设为紧急模式,即把Sysdatabases表中AAA数据库的status属性设为’37268’,就表示把AAA数据库处于紧急模式。 update sysdatabases set status=32768 where hame=’AAA’ 如果没有报告什么错误,就可以进行以下操作。 ②设置数据库AAA为单用户模式,并检查数据库 重启SQL Server服务器; 把数据库AAA设为单用户模式 Sp_dboption ’AAA’, ’single user’, ’true’ 运行以下语句,检查数据库AAA DBCC CHECKDB(’AAA’) 如果没有什么大的问题就可以把数据库的状态改回去。 ③还原数据库的状态 运行以下语句,就可以把数据库的状态还原: update sysdatabases set status=28 where name=’AAA’sp_configure ’allow updates’,0Go 如果没有什么大的问题,刷新一下数据库,数据库AAA又会出现在你面前,但目前恢复工作还没有做完,此时的数据库仍不能工作,还要进行下面的处理,才能真正恢复。 ④利用DTS的导入导出向导,把数据库AAA导入到一个新建数据库BBB中 新建一个数据库BBB; 右击BBB,选择IMPORT功能,打开导入向导; 目标源选择"在SQL Server数据库之间复制对象和数据库",这样可以把表结构,数据视图和存储过程导入到BBB中 再用此功能把BBB库替换成原来的AAA库即可。 到此为止,数据库AAA就完全恢复。 SQLServer日志文件丢失是一件非常危险的事情,很有可能你的数据库彻底毁坏。SQL Server数据库的恢复都是靠日志文件来完成,所以无论如何都要保证日志文件的存在,它至关重要。为了使我们的数据库万无一失,最好采用多种备份方式相结合,所以我们要从心里重视数据库的管理与维护工作。