SQL Server只有MDF文件,无日志LDF文件恢复
- 格式:pdf
- 大小:779.34 KB
- 文档页数:10
瑞星RavNetDB数据库缺少LDF文件情况下的恢复方法注:此恢复方法是适用于安装SQL Server数据库的情况下。
首先需要停止所有的瑞星服务1.在SQL Server 数据库上创建一个与RavNetDB数据同名的数据库。
注意:这个数据的MDF和LDF文件的路径要与原RavNetDB所要放置的位置相同2.停止SQL Server 数据库服务net stop mssqlserver3.打开资源管理器打开新建的RavNetDB.MDF所在目录,将这个RavNetDB.MDF文件改名(随便改)然后将原来的RavNetDB.MDF文件COPY到这个目录中。
4.右键开打RavNetDB.MDF 的文件属性对话框,然后点到安全页面,在“组和用户”中添加一个用户组。
这个用户组的名字为(应该只有这么一个类似帐户组) :SQLServer2005MSSQLUser$xxxxxxxxx (xxxxxxx 是一个计算机本地帐号) 这个用户要对RavNetDB.MDB 文件拥有完全控制权。
5.启动SQL Server 2005net start mssqlserver6.打开SQL Server Management Studio 便连接到SQLServer实例,并打开一个查询窗口7.执行以下SQL语句(注意:要一条一条的执行,这样才能看到每条的执行结果)a. ALTER DATABASE RavNetDB SET EMERGENCYb. ALTER DATABASE RavNetDB SET SINGLE_USERc. DBCC CHECKDB('RavNetDB', REPAIR_ALLOW_DATA_LOSS) (注意在执行这条命令时,在执行结果最前面会有一个行红色错误信息,这是正常的)d. DBCC CHECKDB('RavNetDB', REPAIR_REBUILD)e. ALTER DATABASE RavNetDB SET MULTI_USER。
通过Navicat导⼊SQLServer的MDF⽂件和LDF⽂件由于项⽬需要,我仅有MDF和LDF⽂件,使⽤第三⽅⼯具进⾏导⼊数据库。
1.采⽤windows连接2.新建查询:EXEC sp_attach_db @dbname = '你的数据库名',@filename1 = 'mdf⽂件路径(包缀名)',@filename2 = 'Ldf⽂件路径(包缀名)'例如:EXEC sp_attach_db @dbname = 'Shop',@filename1 = 'F:\Supermarket\Database\Shop.mdf',@filename2 = 'F:\Supermarket\Database\Shop_log.LDF'可能出现的错误:“拒绝访问”====》打开MDF或者LDF⽂件的属性-》安全-》修改Authenticated Users-更改该组权限为完全控制权限,再次附加成功。
如下图:3.再次进⾏导⼊,出现“Database ‘pubs’ cannot be upgraded because its non-release version (539) is not supported by this version of SQL Server.You cannot open a database that is incompatible with this version of sqlservr.exe. You must re-create the database.Could not open new database ‘pubs’. CREATE DATABASE is aborted. (Microsoft SQL Server, Error: 950)”意思就是版本不兼容,参考外⽹的解决办法:通过导出到SQL脚本并在⽬标服务器上执⾏来提取源数据库,或者使⽤SQL数据库迁移向导。
SQLServer2008数据库备份与恢复数据库备份和恢复是数据库管理中至关重要的任务,它们保证了数据的可靠性和安全性。
在使用SQL Server 2008进行数据库备份和恢复时,我们需要了解相关的操作步骤和技巧。
本文将为您介绍SQL Server 2008数据库备份和恢复的方法。
一、数据库备份数据库备份是指将数据库的数据、日志和文件备份到非原始数据库的操作。
通过备份操作,我们可以在出现故障或数据丢失的情况下,快速恢复数据库。
下面是SQL Server 2008数据库备份的步骤:1. 打开SQL Server Management Studio(SSMS),连接到目标数据库服务器。
2. 在SSMS左侧的“对象资源管理器”中展开“数据库”节点,选中要备份的数据库。
3. 右键点击选中的数据库,选择“任务” > “备份”。
4. 在备份对话框中,选择“数据库”选项卡,确保已正确选择了要备份的数据库。
5. 在“设置”选项卡中,设置备份文件的名称、位置和类型。
可以选择完整备份、差异备份或事务日志备份。
6. 点击“确定”按钮,开始执行备份操作。
7. 备份完成后,可以在备份文件所在的位置验证备份文件是否生成成功。
二、数据库恢复数据库恢复是指将备份的数据库还原到原始数据库或新数据库的操作。
通过恢复操作,我们可以在数据库损坏或丢失时,恢复到最近的备份点。
下面是SQL Server 2008数据库恢复的步骤:1. 打开SSMS,连接到目标数据库服务器。
2. 在SSMS左侧的“对象资源管理器”中展开“数据库”节点,找到要进行恢复的数据库。
3. 右键点击选中的数据库,选择“任务” > “还原” > “数据库”。
4. 在还原对话框中,选择“一般”选项卡,确保已正确选择了要还原的数据库。
5. 在“来源”选项卡中,选择备份文件的位置和名称,选择要还原的备份文件。
6. 在“选项”选项卡中,可以选择覆盖现有数据库,或将数据库还原到新的位置。
sql数据库还原操作说明
SQL数据库的还原操作主要包括以下步骤:
1. 备份文件准备:确保已有一个备份文件,该文件通常以.bak或.trn为后缀。
2. 连接数据库:打开SQL Server Management Studio,并连接到要还原
数据的数据库。
3. 恢复数据库:在“对象资源管理器”中,右键单击要还原的数据库,选择“任务”→“还原”→“数据库”。
4. 在“还原数据库”对话框中,选择“从设备”。
5. 单击“添加”按钮,选择备份文件,然后单击“确定”。
6. 如果需要指定还原哪个备份内容,在“备份号”下拉列表中选择要恢复的备份,并在“选项”中将“移至”中的物理文件名修改为数据文件要存放的文件名。
7. 如果要还原的数据库已经存在,选择“在现有数据库上还原”,然后确定。
或者也可以使用SQL语句进行数据库还原,如:restore database 数据库from disk='c:你的备份文件'。
注意:这些步骤和代码仅是示例,具体的操作步骤和代码可能因您的系统和数据库的具体情况而有所不同。
在执行任何还原操作之前,建议先在测试环境中进行验证,并确保已做好充分的备份。
解决由于sql2000日志文件引起的“置疑”。
日志有错误--------重新附加提示日志有错误。
日志文件丢失-----丢失了.ldf文件,只有.mdf文件的数据库重建。
步骤:一、备份“置疑”数据库的数据文件,因为日志文件.ldf出错,可以只备份.mdf文件。
二、打开企业管理器(SQL Server Enterprise Manager),删除“置疑”数据库,如果提示删除错误,可以重启数据库服务器,然后再试。
三、在企业管理器中,新建同名数据库(假如数据库为test),注意建立的数据库名称,还有数据文件名要保持和原数据库一致。
四、停止数据库服务器。
五、将刚才新建数据库生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库.mdf 文件覆盖刚才生成的数据库数据文件test_data.mdf。
六、启动数据库服务器。
此时会看到数据库test的状态为“置疑”。
这时候不能对此数据库进行任何操作。
七、设置数据库允许直接操作系统表。
此操作可以在企业管理器(SQL Server Enterprise Manager)里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。
也可以使用如下语句来实现。
use mastergosp_configure 'allow updates',1goreconfigure with overridego八、设置test为紧急修复模式。
update sysdatabases set status=-32768 where dbid=DB_ID('test')此时可以在企业管理器(SQL Server Enterprise Manager)里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表。
九、下面执行真正的恢复操作,用dbcc rebuild_log命令来重建数据库日志文件(重建路径根据你实际的数据库路径来)。
sql数据库还原操作
SQL数据库还原操作是将已备份的数据库恢复到原始状态的过程。
以
下是SQL数据库还原操作的步骤:
1. 打开SQL Server Management Studio。
2.单击“对象资源管理器”窗格中的“数据库”文件夹。
3.选择要还原的目标数据库,右键单击该数据库,然后选择“任
务”>“还原”>“数据库”。
4.在“还原数据库”窗口中,选择备份文件位置,选择要恢复的备份
文件。
5.在“选项”页签上,选择要还原的数据的选项,如还原所有数据库、还原所有文件、还原数据库中的所有事务日志等。
6.单击“确定”按钮开始还原操作。
7.在还原操作完成后,可以检查数据库以确保所有数据和功能都已正
确地恢复。
需要注意的是,还原操作可能需要一些时间,具体时间取决于数据库
和计算机的性能。
在还原操作完成之前,请不要关闭还原程序,以免出现
不必要的错误。
sqlserver数据库ldf文件过大解决方法九压缩日志及数据库文件大小/*--特别注意请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.--*/--下面的所有库名都指你要处理的数据库的库名1.清空日志DUMP TRANSACTION 库名WITH NO_LOG2.截断事务日志: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) ---------------------------------------------------------------------SQL Server 控制Ldf文件的大小(清理历史记录&设定自动缩小)*清理历史记录1. 在SQL Server Enterprice Manager(企业管理器)工具列---进入SQL Query Analyzer(SQL查询分析器)2. 输入BACKUP LOG <你的数据库名称> WITH TRUNCATE_ONLY如: BACKUP LOG myXXDB WITH TRUNCATE_ONLY2. 回SQL Server Enterprice Manager, 在该数据库上按右键选[所有工作/压缩数据库],点[文件], 在数据库文件选择该Log文件, 在[压缩动作]选择[将文件压缩为X MB (最小值为Y MB)],直接将x改成其建议其最小值y按[确定]即可压缩.先不要离开,再点一次[文件]看看压了多少, 会发现还可以再压, 还会变更小哟! 可以压两三次.总结:其实也就是两个指令就可以完成了BACKUP LOG DateBaseName WITH TRUNCATE_ONLYDBCC ShrinkDatabase(DateBaseName)*设定数据库自动缩小, 默认值为OFF方法1.ALTER DATABASE <你的数据库名称> SET AUTO_SHRINK ON如: ALTER DATABASE myXXDB SET AUTO_SHRINK ON方法2.在数据库上按右键选内容(要等一下下), 点[选项]页, 勾选[自动压缩]后按确定SQL SERVER日志清除的两种方法在使用过程中大家经常碰到数据库日志非常大的情况,在这里介绍了两种处理方法……方法一一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存。
无日志恢复SQL Server数据库方法一1.新建一个同名的数据库2.再停掉sql server(注意不要分离数据库)3.用原数据库的数据文件覆盖掉这个新建的数据库4.再重启sql server5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了.E MASTER2.3.GO4.5. SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE6.7.GO8.9.UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'10.11.Go12.13.sp_dboption '置疑的数据库名', 'single user', 'true'14.15. Go16.17.DBCC CHECKDB('置疑的数据库名')18.19.Go20.21.update sysdatabases set status =28 where name='置疑的数据库名'22.23.Go24.25.sp_configure 'allow updates', 0 reconfigure with override26.27.Go28.29.sp_dboption '置疑的数据库名', 'single user', 'false'30.31.Go无日志恢复SQL Server数据库方法二没有效果的恢复步骤附加数据库_Rambo讲过被删除日志文件中不存在活动日志时,可以这么做来恢复:1,分离被置疑的数据库,可以使用sp_detach_db2,附加数据库,可以使用sp_attach_single_file_db但是,很遗憾,执行之后,SQL Server质疑数据文件和日志文件不符,所以无法附加数据库数据文件。
SQL数据库安装过程问题解决SQL Server 2000有四个正式版本:企业版/标准版/个人版/开发版问题1 安装数据库的时候提示下面的对话框,确定以后在安装定义的窗口“服务器和客户端工具”是灰的,只能选择仅安装客户端工具。
解决方法a).SQL server不同版本的安装与操作系统是否支持直接有关。
b).SQL server 2000以前的版本,例如7.0一般不存在多个版本,只有标准版跟桌面版。
用户如果不清楚该装什么版本的话,可按安装上的安装先决条件指示安装,一般在WIN2000 服务器版上装标准版,其他的系统装桌面版的就可以。
Windows 2000 的Server版本,可以安装SQL Server 2000的任何版本,Professional版本只能安装SQL Server 2000的个人版、开发版、评估版、MCDE。
所以,操作系统可能是Home版本,不支持SQL Server 2000的企业版本,选择安装个人版就可以了。
c).PS: XP Professional SP2,不支持SQL企业版。
d).SQL Server 2000 企业版(必须在WIN 2000 SERVER服务器版本上安装)作为生产数据库服务器使用。
支持SQL Server 2000中的所有可用功能,并可根据支持最大的Web 站点和企业联机事务处理(OLTP)及数据仓库系统所需的性能水平进行伸缩。
e).SQL Server 2000标准版(必须在WIN2000 SERVER服务器版本上安装)作为小工作组或部门的数据库服务器使用。
f).SQL Server 2000 个人版(可以在WINXP上安装)供移动的用户使用,这些用户有时从网络上断开,但所运行的应用程序需要SQL Server数据存储。
在客户端计算机上运行需要本地SQL Server数据存储的独立应用程序时也使用个人版。
g).SQL Server 2000开发版(可以在WINXP上安装)供程序员用来开发将SQL Server 2000用作数据存储的应用程序。
sql——SQLServer利⽤mdf、ldf⽂件复制数据库
1.选中要迁移的数据库,右击选择‘属性’,在打开的页⾯中点击‘⽂件’,可以查看到当前数据库⽂件的存放⽬录
2.现在我在数据库实例中有数据库Test1,数据⽂件位于D:\SQLEXPRADV_x64_CHS\setup\MSSQL12.SQLEXPRESS\MSSQL\DATA⽬录下, 我们需要将数据⽂件移动到D:\tmp\data⽬录下
复制过程中报错:操作⽆法完成,因为⽂件已在SQL Server(MSSQLSERVER)中打开。
解决⽅案:打开SQL Server 配置管理器,把SQL Server服务⾥⾯运⾏的服务关掉就能移动了(右键——》点击停⽌)
3.选择右击数据库,然后点击“附加”。
出现以下的界⾯,然后选择加⼊,加⼊上你要加⼊的mdf⽂件就可以。
附加数据库时出错:附加数据库对于服务器****失败。
其他信息:执⾏Transact-SQL语句或批处理时发⽣了异常。
⽆法打开屋⾥⽂件"..\..数据库路径"。
操作系统错误5:"5(拒绝访问。
)"。
(microsoft SQL Server,错误5120)
解决⽅案:需要附加的数据库所在的⽂件夹权限不够。
关于SQL数据库丢失.LDF文件后附加数据库的方法相信很多朋友对SQL中的日志文件不慎删除后,附加MDF 文件,提示LDF文件有问题,导致MDF无法附加的情况,解决方法:1、把需要附加的数据库的MDF文件改名;2、建一个相同的数据库。
库文件名称为要附加的数据库名。
3、打开服务管理器(通常情况下应该在托盘),停止服务3、将新建的数据库文件的MDF文件删掉,并将原有的数据库mdf文件该为原来的名字4、重启sql server服务 ,此时数据库变为置疑状态5、执行以下语句:sp_configure 'allow updates', 1 reconfigure with overrideupdate sysdatabases set status='32768' wh ere name='databasename'DBCC rebuild_log ('databasename','日志路径\da tabasename.ldf')update sysdatabases set status='0' where name='databasename'sp_configure 'allow updates', 0 reconfigure with override重置数据库异常状态命令sp_resetstatus 'database_name'到此时,表面上数据库没有什么问题了,实际上此时数据库处于回避恢复模式。
新建一数据库,将原来的数据导入到新建的数据库中,完毕后将原来的数据库删除,新建,然后将数据重新导入,就行了。
需要注意的是,SQL在进行数据导入导出的时候,原始表的主建信息会丢掉,所以需要注意以下。
SQLServer数据库备份和还原——使⽤sqlcmd备份BACKUP DATABASE AbpFirst TO DISK='d:\AbpFirst.bak'还原RESTORE DATABASE AbpFirst FROM DISK='d:\AbpFirst.bak'使⽤sqlcmd命令则要加上连接信息:备份sqlcmd -S . -E -Q "BACKUP DATABASE AbpFirst TO DISK='d:\AbpFirst.bak'"还原sqlcmd -S . -E -Q "RESTORE DATABASE AbpFirst FROM DISK='d:\AbpFirst.bak'"以上的还原命令,如果备份和还原在同⼀台SqlServer 服务器上,则没有问题;但是,如果是在另⼀台SqlServer 服务器上还原该备份⽂件,则会报错。
因为还原的时候会验证备份时数据⽂件的路径。
这时,我们需要使⽤WITH MOVE 重新映射数据⽂件和⽇志⽂件:sqlcmd -S .\sqlexpress -E -Q "RESTORE DATABASE AbpFirst FROM DISK='D:\AbpFirst.bak'WITH MOVE 'AbpFirst'TO'D:\MyData\AbpFirst_Data.mdf', Move 'AbpFirst_log'TO'D:\MyData\AbpFirst_log.ldf'"如果我们不知道数据⽂件和⽇志⽂件的名称,可以使⽤下⾯的命令查询:sqlcmd -S .\sqlexpress -E -Q "RESTORE FILELISTONLY FROM DISK='d:\AbpFirst.bak'"。
只有mdf文件的数据库附加失败的修复2009-02-28 14:43只有mdf文件的数据库附加失败的修复因数据库日志太大,管理员将数据库分离,删除日志文件.ldf文件后再附加mdf 文件,却报错,通常情况下是能够顺利附加的,可能mdf文件有问题导致附加失败,由于管理员在操作前未将数据库备份,最新的备份也是前一天晚上的,当天白天的数据没有备份,现在数据无法恢复,很是着急。
附加时报如下错误:服务器: 消息 1813,级别 16,状态 2,行 1未能打开新数据库 'test'。
CREATE DATABASE 将终止。
设备激活错误。
物理文件名 "d:\data\test_log.LDF' 可能有误。
现在只有手动一步一步修复了,在网上搜到一种解决办法,试了以后成功了,现在记下步骤,路径和文件名大家依自己实际情况而定。
步骤:A、用“企业管理器”新建一个同名的数据。
可以修改默认路径,为表述方便,我使用D:\data\,数据文件名test.mdf,日志文件名test_log.ldfB、停止SQL服务C、删除test_log.ldf文件,将新建的test.mdf文件用旧的test.mdf文件替换。
D、启动SQL服务。
进入企业管理器后发现test数据显示为“置疑”,此后保证无人连接上此数据库,并不做任何操作。
E、设置test数据库允许直接操作系统表。
此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。
也可以使用如下语句来实现。
我在实际操作的时候没有使用命令,命令方式大家可以自己测试 ^_^use mastergosp_configure 'allow updates',1goreconfigure with overridegoF、设置test数据库为紧急修复模式。
压缩日志及数据库文件大小/*--特别注意请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复. --*/ --下面的所有库名都指你要处理的数据库的库名1.清空日志 DUMPTRANS ACTIO N 库名 WI TH NO_LOG 2.截断事务日志:BAC KUP LOG库名 WIT H N O_LOG 3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至X XM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBC C S HRINK DATAB ASE(库名) --收缩指定数据文件,1是文件号,可以通过这个语句查询到:sel ect * from sys files DBCC SH RINKF ILE(1) 4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库: 企业管理器--服务器--数据库--右键--分离数据库 b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K 或用代码:下面的示例分离 pub s,然后将 pu bs 中的一个文件附加到当前服务器。
sqlserver数据库ldf文件过大解决方法九压缩日志及数据库文件大小/*--特别注意请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.--*/--下面的所有库名都指你要处理的数据库的库名1.清空日志DUMP TRANSACTION 库名WITH NO_LOG2.截断事务日志: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) ---------------------------------------------------------------------SQL Server 控制Ldf文件的大小(清理历史记录&设定自动缩小)*清理历史记录1. 在SQL Server Enterprice Manager(企业管理器)工具列---进入SQL Query Analyzer(SQL查询分析器)2. 输入BACKUP LOG <你的数据库名称> WITH TRUNCATE_ONLY如: BACKUP LOG myXXDB WITH TRUNCATE_ONLY2. 回SQL Server Enterprice Manager, 在该数据库上按右键选[所有工作/压缩数据库],点[文件], 在数据库文件选择该Log文件, 在[压缩动作]选择[将文件压缩为X MB (最小值为Y MB)],直接将x改成其建议其最小值y按[确定]即可压缩.先不要离开,再点一次[文件]看看压了多少, 会发现还可以再压, 还会变更小哟! 可以压两三次.总结:其实也就是两个指令就可以完成了BACKUP LOG DateBaseName WITH TRUNCATE_ONLYDBCC ShrinkDatabase(DateBaseName)*设定数据库自动缩小, 默认值为OFF方法1.ALTER DATABASE <你的数据库名称> SET AUTO_SHRINK ON如: ALTER DATABASE myXXDB SET AUTO_SHRINK ON方法2.在数据库上按右键选内容(要等一下下), 点[选项]页, 勾选[自动压缩]后按确定SQL SERVER日志清除的两种方法在使用过程中大家经常碰到数据库日志非常大的情况,在这里介绍了两种处理方法……方法一一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存。
在SQL Server 2008中还原数据库的步骤:
1.打开SQL Server Management Studio,登录到服务器。
2.在“对象资源管理器”窗口中,展开“数据库”节点,右键单击
要还原的数据库,选择“任务”,然后选择“还原”。
3.在“还原数据库”窗口中,选择“从设备”选项,并点击“选择
设备”按钮。
4.在“选择要还原的备份设备”窗口中,选择要从中还原数据库的
备份文件,并点击“确定”按钮。
5.在“还原数据库”窗口中,设置还原选项。
可以选择覆盖现有数
据库或将其还原到特定时间点。
根据需要选择适当的选项,并设置还原参数。
6.点击“确定”按钮开始还原过程。
7.等待还原完成。
还原过程可能需要一些时间,具体取决于数据库
的大小和系统性能。
8.还原完成后,关闭“还原数据库”窗口。
sql server ldf 日志解析在 SQL Server 数据库中,LDF(Log Data File)是用于记录数据库的事务日志的文件。
通过解析LDF 日志,我们可以获得有关数据库的重要信息,如事务操作、数据库更改历史等。
下面是关于 SQL Server LDF 日志解析的相关内容。
1. 了解 LDF 日志结构:LDF 日志由一系列逻辑日志记录(Log Record)组成,每个日志记录都包含了特定的操作或事务信息。
常见的日志记录类型包括事务开始、事务提交、数据修改操作等。
2. 使用 fn_dblog 函数解析 LDF 日志:SQL Server 提供了内置函数 fn_dblog,这个函数可以帮助我们解析 LDF 日志并获得相关信息。
通过执行适当的查询,我们可以从 LDF 日志中检索特定的事务记录、数据修改历史等。
3. 查询特定的事务记录:通过指定适当的查询条件,我们可以筛选出特定的事务记录。
例如,可以查询某个时间范围内的所有事务记录,或者查询特定用户执行的事务记录等。
4. 查找数据修改历史:通过解析 LDF 日志,我们可以查找某个表或特定数据行的修改历史。
这对于数据恢复、审计、追踪恶意行为等非常有用。
5. 注意事项:- LDF 日志的解析可能会占用大量的系统资源,请确保在适当的环境下进行。
- 解析 LDF 日志应该是一个辅助手段,而不是作为主要的数据库操作方式。
- 对于特别大的 LDF 日志文件,解析可能需要较长时间,请耐心等待。
通过对 SQL Server LDF 日志的解析,我们可以获得有关数据库的重要信息,帮助我们进行故障诊断、数据恢复等操作。
请确保在正确的环境和合适的权限下进行 LDF 日志解析,并遵守相关的安全和隐私规定。
SQL Server无日志恢复数据库方法SQL Server是一个关系数据库管理系统,在进行SQL Server数据库操作的过程中难免会出现误删或者别的原因引起的日志损坏,由于SQL Server数据库中数据的重要性,出现了以上的故障之后就必须对数据库中数据进行恢复。
速达软件SQL数据库中的两个备份文件mdf和ldf文件,因误删或者别的原因引起的ldf日志文件被清除,现在只有一个mdf数据文件,怎么样才能恢复原来的帐套数据呢?鉴于SQL Server数据库中日志文件的重要性,我们必须将丢失的日志文件给找回来,下文就为大家介绍一种SQL Server无日志恢复数据库方法。
运软件行环境:
SQL SERVER 2000 SP4
速达 V5 V3.90 ERP 试用版
准备:备份原速达帐套的mdf数据文件(假设原帐套名为:
SD001), SD31502_SD001.mdf
1、停止SQL SERVER 服务管理器,把数据库的数据文件
SD31502_SD001.mdf移走。
2、打开速达软件,新建一个跟原来帐套名称SD001同名的帐套
SD001,停掉SQL服务,用原帐套数据mdf文件(SD31502_SD001.mdf)覆盖新建的帐套mdf文件,删除新建帐套的ldf文件
(SD31502_SD001_log.ldf)。
3、启动SQL数据库 --- 企业管理器,打开新建的SD001速达数据库,可以看到数据库SD31502_SD001为灰色的“置疑” 状态,现在不进行任何操作。
开始:SQL Server无日志恢复数据库
1、 将SQL数据库设置为“允许对系统目录直接进行修改”,
右键(local)(windows NT)--- 属性 --- 服务器设
置,选中“允许对系统目录直接进行修改”;
或,运行以下语句,允许对系统目录直接进行修改。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
执行结果:
DBCC 执行完毕。
如果 DBCC 输出了错误信息,请与系统管理员联系。
已将配置选项 'allow updates' 从 0 改为 1。
请运行RECONFIGURE 语句以安装。
2、运行以下语句,设置置疑数据库为紧急模式:
update sysdatabases set status = -32768 where name = 'SD31502_SD0001'
go
执行结果:
(所影响的行数为 1 行)
此时SQL数据库处于“只读\置疑\脱机\紧急模式”。
3、运行以下语句,把应用数据库设置为Single User单项用户模式(可省略);
sp_dboption 'SD31502_SD0001', 'single user', 'true'
执行结果:
命令已成功完成。
4、运行以下语句,重新建立LOG (置疑数据库_log.ldf) 文件
dbcc rebuild_log('SD31502_SD0001','C: \Program
Files\SuperData\速达V5\Data\SD31502_SD0001_log.ldf')或
dbcc rebuild_log('SD31502_SD0001','C:\Program
Files\Microsoft SQL Server\MSSQL\Data\SD31502_SD0001_log.ldf')
建议ldf保存速达数据Data文件夹,'C: \Program
Files\SuperData\速达V5\Data。
如果遇到下列提示信息:服务器: 消息 50xx,级别 16,状态 1,行 1 未能排它地锁定数据库以执行该操作。
说明您的其他程序正在使用该数据库,如果刚才您正在使用SQL Server Enterprise Manager打开数据库的系统表,那么退出SQL Server Enterprise Manager就可以了。
执行结果::
警告: 数据库 '置疑数据库' 的日志已重建。
已失去事务的一致性。
应运行DBCC CHECKDB 以验证物理一致性。
DBCC 执行完毕。
如果DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。
此时可以访问数据库了。
如不执行第4步,则第3、第7步则不可省略,但执行完第9步后数据库能打开,数据库还处于紧急模式,打开速达软件会提示处于“未能在数据库 'SD31502_SD0001'中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式”。
有些数据可能会不显示,如执行DTS导出,部份表可能不能导出,即使能导出表,部份表也会提示出错。
5、验证数据库一致性(可省略) :
dbcc checkdb('SD31502_SD0001')
执行结果:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据
库'SD31502_SD001' 中)。
DBCC 执行完毕。
如果 DBCC 输出了错误信息,请与系统管理员联系。
6、设置数据库为正常状态 :
sp_dboption 'SD31502_SD0001','dbo use only','false'
执行结果:
数据库的状态“只供DBO使用”,恢复为正常状态
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
7、运行以下语句,关闭Single User单用户模式(可省略):
sp_dboption 'SD31502_SD0001', 'single user', 'false'
8、将步骤4中设置的“允许对系统目录直接修改”进行关闭,
你可以在SQL Server Enterprise Manager里面恢复,也可以执行以下语句,在DBCC 完成关闭。
use master
go
sp_configure 'allow updates',0
go
reconfigure with override
go
执行结果:
已将配置选项 'allow updates' 从 1 改为 0。
请运行RECONFIGURE 语句以安装。
9、你修改了'NESTED TRIGGERS'的值,需要运行RECONFIGURE语句来使这个修改生效。
运行以下语句,使这个修改生效
RECONFIGURE
最后、重启电脑,打开速达软件,就可以看到原帐套数据啦。
衡量数据恢复成功与否的标准:第一:能不能进行速达帐套的修复操作,第二:能不能进行速达帐套的备份操作,附合上述两个标准说明数据恢复成功。
网上提供的数据恢复服务无非是恢复原数据库,再用DTS 导入原数据库表数据而已。
如要恢复原帐套,用DTS数据导入时注意选择“扩展属性”。
提醒各位,请用DTS导入导出数据,不然你的数据库结构或多或少,会有点问题。
但SQL数据库不熟悉的,请千万不要碰。
针对DTS导入导出, 致远会写一篇如何利用SQ数据库,进行修复“速达帐套修复失败”的修复方法,并用DTS导入导出方法进行重建已修复的速达帐套的博文,教会你如何修复MDF数据文件,并用DTS导入导出方法重建新的MDF文件。
此提醒各位速友,坚持每天备份帐套数据,以防万一。
附:在查询分析器中如执行存储过程,运行以下语句。
1,分离被置疑的数据库,
sp_detach_db @dbname = 'SD31502_SD0001'
2,附加数据库,
sp_attach_single_file_db @dbname = 'SD31502_SD0001',
@physname = 'C:\Program Files\SuperData\速达
V5\Data\SD31502_SD0001.mdf'。