服务器上有个文件丢了,查看系统日志能看出来吗
可以。服务器上文件丢了,可以查看系统日志文件有应用程序日志,安全日志、系统日志、DNS服务器日志等等。
1、安全日志文件:C:\WINDOWS\system32\config\SecEventEVT。
2、系统日志文件:C:\WINDOWS\system32\config\EVT。
3、应用程序日志文件:C:\WINDOWS\system32\config\AppEventEVT。提醒:日志文件是一些文件系统集合,依靠建立起的各种数据的日志文件而存在。在任何系统发生崩溃或需要重新启动时,数据就遵从日志文件中的信息记录原封不动进行恢复。
给你一个我日常维护数据库的方法吧。
SQL Server 2000数据库LDF损坏,只有mdf的恢复方法。
SQL Server 2000数据库文件遭到破坏的现象经常出现,数据库出错是否可以修复呢?答案是可以的,本日志以一个sql server 2000数据库,数据库日志文件ldf损坏了,mdf正常,数据库附加失败的修复方法总结一下,数据库数据恢复在很多时候比较复杂,当数据库存在大量错误的时候,使用DBCC修复也是不可以的,需要拆解数据库来抢救重要的数据,下面是较为常见的一种SQL Server 2000数据库修复方式:
1) 先及时把原来的数据库文件(如testmdf)备份到其他地方。
2) 停掉服务器。
3) 删除这个testmdf。
4) 重新建立一个test同名数据库。
5) 删除这个新建立的test数据库的testldf文件,并用开始备份好testmdf文件覆盖这个新建立的testmdf文件。
6) 启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”。
7) 设置test为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
8) 下面执行真正的恢复操作,重建数据库日志文件
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_logldf')
执行过程中,如果遇到下列提示信息:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
说明您的其他程序正在使用该数据库,如果刚才您在操作中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
9) 验证数据库一致性
dbcc checkdb('test')
10设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
11)最后一步,我们要将步骤6中设置的“允许对系统目录直接修改”一项恢复;
查看windows server2008服务器的重启日志记录步骤如下:
1、点击菜单栏左下角“开始”按钮,在右侧的菜单栏中点击“管理工具”选项。
2、在弹出的右侧菜单栏中点击“事件查看器”选项。
3、弹出的“事件查看器”界面右侧,左侧有“windows日志”选项,单击左侧“+”。
4、在展开的列表中选中“系统”这一选项可以看到系统产生的日志记录。
5、为了方便直接查找重启的日志,在右侧的菜单栏中点击“筛选当前日志…”。
6、在弹出的窗口中选择“筛选器”选项卡,并在“任务类别”这一选项框上方的框中输入“1074”的事件ID,接着点击下方的“确定”即可看到系统所有的重启日志记录。(注:“1074”为系统重启的事件ID)
7、若要查看详细信息,双击该条目即可。
以上为查看windows server2008服务器的重启日志记录步骤。
1、相信经常进行编程的朋友都知道,当程序出错的时候可以查看服务器日志来了解解决错误。那么,以Win2008为例,讲述怎么查看服务器日志。
2、方法/步骤:
(1)进Win2008服务器,点击开始,找到控制面板。
(2)点击进入控制面板,找到管理工具。
(3)找到管理工具,点击事件查看器。
(4)进入事件查看器,展开Windows日志,点击系统,右侧会显示出信息。
(5)查看事件查看器的右方,我们会看到属性选项,红框中已经圈出。
(6)点击属性后,我们会看到服务器日志的路径。
(7)打开C:\Windows\System32\winevt,再打开Logs文件夹,就会看到服务器日志。
恢复过程
以数据库恢复模式设为FULL为例:
恢复过程的第一步是执行尾日志备份,(BACKUP LOG Student TO DISK='E:\stulogdmp' ) 。
在恢复一个数据库之前,为保证上次备份之后发生改变的记录都包含在恢复过程之中,需要执行这种类型的备份。
下一步,查找数据库备份文件在机器或网络中的存储位置。
如果要在另一台服务器上恢复数据库,最好是把这些文件复制到目标服务器中。在备份文件所在的位置,找出最后一个完整的数据库备份(这些文件通常使用bak为扩展名);恢复这个完整的备份。
下面的脚本将完整的备份文件应用于NewDatabase数据库:
RESTORE DATABASE NewDatabaseFROM DISK = 'D: BackupFilesTestDatabaseFullBackupbak'
WITH
MOVE 'PreviousDatabase' TO 'D:DataFiles TestDatabasemdf',
MOVE 'PreviousDatabase_log' TO 'D:DataFiles TestDatabase_Logldf',
NORECOVERY
这段脚本指出完整备份文件位于服务器的D盘中,你正在使用备份文件恢复NewDatabase这个数据库。
脚本中的语句将数据文件和日志文件从完整备份文件转移到TestDatabase数据库的新文件中。脚本中的最后一个语句——NORECOVERY——非常重要。
NORECOVERY模式有三种选项,如下所示:
NORECOVERY:告诉SQL Server你没有完成恢复数据库的过程,随后会出现恢复文件。当数据库处于这种状态时,数据库还不能使用,因而不允许建立连接。
RECOVERY:告诉SQL Server你已经完成数据库恢复过程,数据库即将准备就绪。这是默认选项,也是最常用的选项。
STANDBY:告诉SQL Server当前数据库还未为完成恢复做好准备,随后可以使用日志文件进行恢复。如果必要,你可以使用这个选项为恢复数据库建立连接。但是,如果当前不存在连接,将来的事务日志只能应用于数据库。
一旦你使用NORECOVERY选项恢复了完整备份,你可以开始应用事务日志备份或差异备份。
差异备份
差异备份是指对上次完整数据库备份后数据库发生的任何改变进行备份。如果有几个差异备份,只需要恢复最后一个备份文件。在这种情况下,并不存在差异备份,因此可以直接转向事务日志备份。
事务日志备份
事务日志备份保留上次事务日志备份后发生的所有事务的痕迹;它还允许把数据库恢复到数据库发生错误之前的一个时间点。事务日志备份按顺序发生,从而建立一个备份链。在把一连串事务日志备份恢复到一个时间点时,事务日志文件也必须按顺序恢复。
当使用一个数据库维护计划来建立事务日志备份时,事务日志文件名中往往包含一个时间指示器。
下面的脚本使用NORECOVERY选项应用三个事务日志备份,最后一个语句把数据库恢复到最后一个事务日志文件的结束点。
RESTORE LOG NewDatabaseFROM DISK = ''D: BackupFilesTestDatabase_TransactionLogBackup1trn'
WITH NORECOVERY
RESTORE LOG NewDatabase
FROM DISK = ''D: BackupFiles TestDatabase_TransactionLogBackup2trn'
WITH NORECOVERY
RESTORE LOG NewDatabase
FROM DISK = ''D: BackupFiles TestDatabase_TransactionLogBackup3trn'
WITH NORECOVERY
RESTORE LOG NewDatabase
FROM DISK = ''D: BackupFiles TestDatabase_TransactionLogBackup4trn'
WITH RECOVERY
恢复到一个时间点
在上面的例子中,把数据库恢复到最后一个事务日志的结束点。
如果想把数据库恢复到事务日志结束前的某个特定的时间点,必须使用STOPAT选项。
下面的脚本把日志序列中的第四个事务日志恢复到4:01 AM——正好在数据库出错之前。
RESTORE LOG NewDatabaseFROM DISK = ''D: BackupFiles TestDatabase_TransactionLogBackup4trn'
WITH STOPAT = N'6/28/2007 4:01:45 PM', RECOVERY
参考下列说明:
/--说明:
下面的代码演示了如何利用日志还原功能,将主数据库中的数据变化及时反馈到备用数据库中
备用数据库的数据可以随时用于查询,但不能被更新(备用数据库只读)。
--/
--首先,创建一个演示用的数据库(主数据库)
CREATE DATABASE Db_test
ON
( NAME = Db_test_DATA,
FILENAME = 'c:\Db_testmdf' )
LOG ON
( NAME = Db_test_LOG,
FILENAME = 'c:\Db_testldf')
GO
--对数据库进行备份
BACKUP DATABASE Db_test TO DISK='c:\test_databak' WITH FORMAT
GO
--把数据库还原成备用数据库(演示主数据库与这个备用数据库之间的同步)
RESTORE DATABASE Db_test_bak FROM DISK='c:\test_databak'
WITH REPLACE,STANDBY='c:\db_test_bakldf'
,MOVE 'Db_test_DATA' TO 'c:\Db_test_datamdf'
,MOVE 'Db_test_LOG' TO 'c:\Db_test_logldf'
GO
--启动 SQL Agent 服务
EXEC masterxp_cmdshell 'net start sqlserveragent',no_output
GO
--创建主服务器数据训与备用服务器数据库之间同步的作业
DECLARE @jogid uniqueidentifier
EXEC msdbsp_add_job
@job_id = @jogid OUTPUT,
@job_name = N'数据同步处理'
--创建同步处理步骤
EXEC msdbsp_add_jobstep
@job_id = @jogid,
@step_name = N'数据同步',
@subsystem = 'TSQL',
@command = N'
--主数据库中进行日志备份
BACKUP LOG Db_test TO DISK=''c:\test_logbak'' WITH FORMAT
--备用数据库中还原主数据库的日志备份(应用主数据库中的最新变化
--实际应该时主数据库备份与备用数据库的还原作业应该分别在主服务器和备用服务器上建立,并且备份文件应该放在主服务器和备用都能访问的共享目录中
RESTORE LOG Db_test_bak FROM DISK=''c:\test_logbak'' WITH STANDBY=''c:\test_logldf''',
@retry_attempts = 5,
@retry_interval = 5
--创建调度(每分钟执行一次)
EXEC msdbsp_add_jobschedule
@job_id = @jogid,
@name = N'时间安排',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@freq_recurrence_factor=1
-- 添加目标服务器
EXEC msdbdbosp_add_jobserver
@job_id = @jogid,
@server_name = N'(local)'
GO
--通过上述处理,主数据库与备用数据库之间的同步关系已经设置完成
--下面开始测试是否能实现同步
--在主数据库中创建一个测试用的表
CREATE TABLE Db_testdboTB_test(ID int)
GO
--等待1分钟30秒(由于同步的时间间隔设置为1分钟,所以要延时才能看到效果)
WAITFOR DELAY '00:01:30'
GO
--查询一下备用数据库,看看同步是否成功
SELECT FROM Db_test_bakdboTB_test
/--结果:
ID
-----------
(所影响的行数为 0 行)
--/
--测试成功
GO
--最后删除所有的测试
DROP DATABASE Db_test,Db_test_bak
EXEC msdbsp_delete_job @job_name=N'数据同步处理'
GO
/===========================================================/
/--服务器档机处理说明
使用这种方式建立的数据库同步,当主数据库不可用时(例如,主数据库损坏或者停机检修)
可以使用以下两种方法使备用数据库可用。
--/
--1 如果主数据库损坏,无法备份出最新的日志,可以直接使用下面的语句使备用数据库可读写(丢失最近一次日志还原后的所有数据)。
--RESTORE LOG Db_test_bak WITH RECOVERY
--2 如果主数据库可以备份出最新日志,则可以使用下面的语句。
--先备份主数据库的最新的事务日志
--BACKUP LOG Db_test TO DISK=''c:\test_logbak'' WITH FORMAT
--再在备用数据库中恢复最新的事务日志,并且使备用数据库可读写(升级为主数据库)
--RESTORE LOG Db_test_bak FROM DISK='c:\test_logbak'
简单地说:
你的sql服务要使用指定的windows用户登陆, 而不能使用"本地系统帐户"
用于登陆sql服务的用户要求对共享目录具有所有权限
如果你的电脑没有加入到域, 还必须保证源和目标服务器的sql服务设置的登陆用户是一样的(用户名和密码都一样)
网络备份主要是权限设置问题, 参考下面的备份文件共享目录权限设置方法去解决目录的共享权限就可以了
下面假设是假设A服务器上的数据库备份到B服务器上的共享目录权限设置(两台服务器应该在局域网内,允许目录共享访问)::
机器A,B创建一个同名的windows用户,用户组设置为administrators,并设置相同的密码,做为备份文件夹文件夹的有效访问用户,操作:
我的电脑
--控制面板
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户
在B机器器上,新建一个共享目录,做为备份文件的存放目录,操作:
我的电脑--D:\ 新建一个目录,名为: BAK
--右键这个新建的目录
--属性--共享
--选择"共享该文件夹"
--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
--确定
设置 MSSQLSERVER 及 SQLSERVERAGENT 服务的启动用户
开始--程序--管理工具--服务
--右键 MSSQLSERVER
--属性--登陆--选择"此账户"
--输入或者选择第一步中创建的windows登录用户名
--"密码"中输入该用户的密码
--确定
--同样的方法设置 SQLSERVERAGENT
在A机器上完成对B机器BAK目录的映射
查询分析器中执行下面的语句,检验是否成功:
exec masterxp_cmdshell 'dir 映射的盘符'
A服务器上做备份计划
备注:创建一个新的用户只是为了让MSSQLSERVER服务的启动帐户与共享目录的有效访问同名且密码相同,这样才能通过验证(所以你也可以用其他有效的用户来代替,只需要满足用户名和密码相同,并且拥有足够的权限)
0条评论