提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:鲍佳佳|2021-01-26 14:09:52.270|阅读 389 次
概述:我们将更详细地探讨每种还原类型。因此,让我们从基本类型开始-一个简单的恢复模型和一个完整的恢复模型。上文我们讲了简单恢复;下面接着讲解如何恢复数据库文件和文件组。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
dbForge Studio for SQL Server为有效的探索、分析SQL Server数据库中的大型数据集提供全面的解决方案,并设计各种报表以帮助作出合理的决策。
点击下载dbForge Studio for SQL Server最新试用版
数据库恢复类型
在本文讨论数据还原过程时,让我介绍三种主要的数据库恢复类型:
我们将更详细地探讨每种还原类型。因此,让我们从基本类型开始-一个简单的恢复模型和一个完整的恢复模型。
上文我们讲了简单恢复;下面接着讲解如何恢复数据库文件和文件组。
恢复数据库文件和文件组
除此之外,我们可以使用以下脚本还原特定的数据库文件:
RESTORE DATABASE [JobEmplDB] FILE = N'JobEmplDB' FROM DISK = N'\\Shared\Backup\Full\JobEmplDB_2020_07_19_17_27_01.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10; GO
在这里,我们还原JobEmplDB文件。还原它时,我们可以将WITH NORECOVERY设置为预设文件的事务日志备份的顺序。
同样,我们可以还原文件组并还原部分备份。要通过SSMS执行此操作,请右键单击“数据库”,然后选择“还原文件和文件组”选项:
图。8. 在SSMS中还原文件和文件组
在“常规”选项卡上,我们选择要还原的目标和还原源(部分备份的文件以及要还原的元素):
图。9. SSMS中的“常规”选项卡设置
然后,在“选项”选项卡上,我们需要配置必要的设置:
图。10. SSMS中的“选项”选项卡设置
数据库本身具有相同的快捷菜单:
图。11. SSMS中数据库的“还原”上下文菜单
请注意,仅当数据库处于NORECOVERY或STANDBY模式时,才可以还原事务日志备份。这就是为什么此选项在上面的屏幕截图中不可用。
此外,还可以还原页面。例如,下面的示例演示了如何还原具有以下标识符的页面:1:57、1:202、1:916和1:1016:
RESTORE DATABASE [JobEmplDB] PAGE='1:57, 1:202, 1:916, 1:1016' FROM DISK = '\\Shared\Backup\Full\JobEmplDB_Full_backup_2020_07_19_14_04_25.bak' WITH NORECOVERY; RESTORE LOG [JobEmplDB] FROM DISK = '\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_56.trn' WITH NORECOVERY; RESTORE LOG [JobEmplDB] FROM DISK = '\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_56.trn' WITH NORECOVERY; BACKUP LOG [JobEmplDB] TO DISK = '\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_58.trn'; RESTORE LOG [JobEmplDB] FROM DISK = '\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_58.trn' WITH RECOVERY; GO
如果您想了解更多有关该主题的信息,请阅读有关恢复页面的信息。
实施还原过程
既然我们已经考虑了恢复的基础,那么让我们继续执行该过程。
必须理解,旨在检查备份的例行还原通常是在其他服务器上执行的。数据库位置和还原数据库的位置是两个不同的服务器。
因此,至关重要的是命名备份文件,以便它清楚地定义备份,它属于哪个数据库以及还原的顺序。后者意味着我们需要定义最新的完整备份,最后的差异备份和事务日志备份链。
在当前文章探讨了恢复过程及其自动化的实施。但是,它没有考虑上面阐明的所有要点。特别是,它没有探讨完整的恢复过程。因此,我们将需要改进方法。
首先,除非在之前创建了该模式,否则我们将在相应的数据库中创建srv模式。然后,我们创建[srv]。[RestoreSettings]表以写入要还原的数据库:
CREATE TABLE [srv].[RestoreSettings]( [DBName] [nvarchar](255) NOT NULL, [FullPathRestore] [nvarchar](255) NOT NULL, [DiffPathRestore] [nvarchar](255) NOT NULL, [LogPathRestore] [nvarchar](255) NOT NULL, [InsertUTCDate] [datetime] NOT NULL, CONSTRAINT [PK_RestoreSettings_1] PRIMARY KEY CLUSTERED ( [DBName] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 95, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [srv].[RestoreSettings] ADD CONSTRAINT [DF_RestoreSettings_InsertUTCDate] DEFAULT (getutcdate()) FOR [InsertUTCDate] GO
哪里:
现在,使用以下脚本将JobEmplDB数据库添加到创建的[srv]。[BackupSettings]表中:
INSERT INTO [srv].[RestoreSettings] ([DBName] ,[FullPathRestore] ,[DiffPathRestore] , [LogPathRestore]) SELECT N'JobEmplDB', '\\Shared\Backup\Full\', '\\Shared\Backup\Diff\', '\\Shared\Backup\Log\'; GO
接下来,我们创建[srv]。[RestoreSettingsDetail]表以获取数据库还原的详细设置:
CREATE TABLE [srv].[RestoreSettingsDetail]( [Row_GUID] [uniqueidentifier] NOT NULL, [DBName] [nvarchar](255) NOT NULL, [SourcePathRestore] [nvarchar](255) NOT NULL, [TargetPathRestore] [nvarchar](255) NOT NULL, [Ext] [nvarchar](255) NOT NULL, [InsertUTCDate] [datetime] NOT NULL, CONSTRAINT [PK_RestoreSettingsDetail_1] PRIMARY KEY CLUSTERED ( [Row_GUID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 95, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO
ALTER TABLE [srv].[RestoreSettingsDetail] ADD CONSTRAINT [DF_RestoreSettingsDetail_Row_GUID] DEFAULT (newid()) FOR [Row_GUID] GO
ALTER TABLE [srv].[RestoreSettingsDetail] ADD CONSTRAINT [DF_RestoreSettingsDetail_InsertUTCDate] DEFAULT (getutcdate()) FOR [InsertUTCDate] GO
在这里,让我澄清一下:
请注意,必须在还原过程中为每个数据库文件设置SourcePathRestore和TargetPathRestore目标的位置。
现在,我们使用以下脚本将JobEmplDB数据库文件的详细还原数据添加到[srv]。[BackupSettingsDetail]表中:
INSERT INTO [srv].[RestoreSettingsDetail] ([DBName] ,[SourcePathRestore] ,[TargetPathRestore] ,[Ext]) SELECT N'JobEmplDB', N'JobEmplDB', N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB2', N'mdf' UNION ALL SELECT N'JobEmplDB', N'JobEmplDB_log', N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB2_log', N'ldf'; GO
之后,我们需要为MS SQL Server实例启用参数сonfigurations,以执行xp_cmdshell存储过程。为此,我们将使用以下脚本:
-- To allow advanced options to be changed. EXECUTE sp_configure 'show advanced options', 1; GO -- To update the currently configured value for advanced options. RECONFIGURE; GO -- To enable the feature. EXECUTE sp_configure 'xp_cmdshell', 1; GO -- To update the currently configured value for this feature. RECONFIGURE; GO
这样,[srv]。[RunFullRestoreDB]存储过程已被完全更改,因此它现在可以定义哪些备份以及如何还原。在备份名称格式如下的情况下:
<数据库名称> _ <备份类型(完整,差异,日志)> _ backup_YYYY_MM_DD_HH_MM_SS。<bak或trn>
[srv]。[RunFullRestoreDB]存储过程的完整调用如下:
EXEC [srv].[RunFullRestoreDB] @OnlyDBName=NULL, @IsNameAddRestore=1;
在这里,@OnlyDBName参数定义了要还原的数据库,而IsNameAddRestore参数设置了在已还原数据库的末尾添加_Restore行及其文件名的必要性。
的定义[SRV] [RunFullRestoreDB]存储过程表明,我们首先得到所有从[SRV]相关数据库的必要信息。[RestoreSettings]和[SRV] [RestoreSettingsDetail]表。
之后,我们将读取每个数据库的完整,差异和事务日志备份的完整路径。对于每个路径,我们读取其中的文件,而无需引用子目录。
最后,我们根据文件名格式,数据库所属和备份类型在这些文件中定义必要的文件。还原脚本是基于检索到的数据生成的。
[srv]。[RunFullRestoreDB]存储过程的一般原理如下:
如果在最新的差异备份创建之后没有创建事务日志,则还原过程将以差异备份还原结束。
如果不存在差异备份,则还原过程将从完整备份开始,并以不早于最新完整备份创建的所有事务日志备份的顺序进行。
如果只有完整备份可用,数据库将严格从中还原。如果没有完整备份,则数据库不会包含在还原过程中。
数据库还原仅涉及名称与以下格式匹配的文件:
<数据库名称> _ <备份类型(完整,差异,日志)> _备份_YYYY_MM_DD_HH_MM_SS。<bak或trn>
这些文件必须与备份类型和数据库名称匹配。当然,最好为每个数据库创建一个单独的子目录以提高生产力。因此,代替以下路径:
\\ Shared \ Backup \ Full \
\\ Shared \ Backup \ Diff \
\\ Shared \ Backup \ Log \
您最好使用:
\\ Shared \ Backup \ Full \ JobEmplDB \
\\ Shared \ Backup \ Diff \ JobEmplDB \
\\ Shared \ Backup \ Log \ JobEmplDB \
综上所述,我们从主要备份类型检查了还原过程的实现:
您可以根据特定的时间表通过代理任务或任何第三方方法和工具来调用这些存储过程。
还可以在[inf]。[RunAsyncExecute]存储过程的帮助下,通过动态创建代理任务来使恢复并行 化。此过程定义了四个参数:
为了加快还原过程,可以利用dbForge Studio for SQL Server,它提供了一个有用的dbForge Restore Wizard,并允许您使用功能强大的SQL备份工具来保护数据库以防数据丢失。
结论
本文介绍了SQL Server数据库还原过程的基本基础,并演示了如何通过考虑所有主要备份类型的SSMS和T-SQL脚本来实现数据库备份的还原。至于本系列的下一篇文章,您将学习如何通过全面的数据库管理和管理工具dbForge Studio for SQL Server来执行SQL Server数据库备份和还原的过程。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
dbForge Studio for SQL Server是用于SQL Server的终极管理工具。
dbForge Studio for MySQLdbForge Studio for MySQL是与专业化MySQL数据库紧密相连的先进开发环境。
dbForge Studio for OracledbForge Studio for Oracle是功能强大的数据库开发环境。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢