惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
Forbes - Security
Forbes - Security
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
V
Visual Studio Blog
月光博客
月光博客
博客园 - Franky
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
The Register - Security
The Register - Security
S
SegmentFault 最新的问题
博客园 - 司徒正美
P
Proofpoint News Feed
Know Your Adversary
Know Your Adversary
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
U
Unit 42
P
Proofpoint News Feed
Scott Helme
Scott Helme
MyScale Blog
MyScale Blog
T
Tenable Blog
Hugging Face - Blog
Hugging Face - Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
小众软件
小众软件
C
CERT Recently Published Vulnerability Notes
P
Palo Alto Networks Blog
V
V2EX
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tailwind CSS Blog
V
Vulnerabilities – Threatpost
Latest news
Latest news
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
Intezer
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
博客园 - 【当耐特】
B
Blog RSS Feed
N
Netflix TechBlog - Medium
Recent Announcements
Recent Announcements
NISL@THU
NISL@THU
C
Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security

博客园 - nzperfect

PAGELATCH_EX Contention on 2:1:103 SQL Server AlwaysON 同步模式的疑似陷阱 XEvent – SQL Server Log文件对磁盘的写操作大小是多少 SQL Server Log文件对磁盘的写操作大小是多少 Initializing the FallBack certificate failed . TDSSNIClient initialization failed Error after SQL Server 2012 installation: Login Failure for "SQL Server Integration Services 11.0" SSIS service SQL Server 灾难恢复31天之第6天:管理区分配页损坏处理 SQL Server 灾难恢复31天之第5天:处理损坏的非聚集索引 SQL Server 灾难恢复31天之第3天:在还原数据库时确定需要哪些备份文件 SQL Server 灾难恢复31天之第4天:备份 SQL Server 灾难恢复31天之第1天:DBCC CHECK命令会自动使用已经存在的数据库快照吗? 发布订阅延迟故障排查案例:分发读进程延迟 Query Hint FAST number_rows 改变SQL Server 执行计划 SQL Server 通过界面生成修改列类型脚本时的一个风险(或Bug) 是什么引起执行计划变得极其糟糕? 应该使用更新统计信息来解决它吗? 如何完整的修改一个数据库的名称 update值与原值相同时,SQL Server会真的去update还是忽略呢? How can I bring mirror database online after principal server is down ? performance monitor没有SQL Server性能计数器
SQL Server 灾难恢复31天之第2天:包含数据库备份在还原时的保护
nzperfect · 2013-01-10 · via 博客园 - nzperfect

说明:灾难恢复系列的文章是由 Robert Davis 写的,发布在SQLSoldier 个人认为挺不错的,所以根据自己的理解,边测试边整理,并非直接翻译,如有不准确,欢迎指正。

本篇进入数据库灾难恢复第二篇,主要讨论还原包含数据库备份的还原时的保护措施,特别是当你拿到一个包含数据库备份,但没有人告诉你他是一般数据库还是包含数据库时,它本身会是一个什么样的保护措施呢?

还原包含数据库:
当我了解到包含性数据库,我第一个担心的问题是,作为一个dba如何阻止那些没有专业知识的人来访问数据库呢?还好,已经有三个保护层面了。

第一层保护:
在还原一个包含数据库或创建一个包含数据库之前,或者之前已经存在一个包含数据库,那么在服务器级别的包含选项必须要启动。如果服务器级别不启动包含选项,那么是完全的保护。你可以通过sp_configure或者通过服务器属性,它在高级选项里,不过他不是一个真的高级选项,所以在你修改或查看服务器级别包含选项时不需要开启Show advanced options选项。

如果要查看是否开启了服务器级别的包含选项,也可以查询sys.configurations这个系统表,用它的好处就是可以自动化脚本,如果要修改,还是需要用sp_configure。

如果在没有启用包含选项的服务器实例上还原一个包含数据库,将会失败并返回下面的信息:

Msg 12824, Level 16, State 1, Line 1
The sp_configure value 'contained database authentication' must be set to 1 in order to restore a contained database.  You may need to use RECONFIGURE to set the value_in_use.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

这个信息告诉你需要先启用服务器级别包含选项才能还原,对于DBA来说,这是一个警告,是否启用这个包含选项由你自己决定,并不是看到这样的信息就一定要去启用,因为可能会影响服务器或数据库的安全。

开启或禁用包含数据为选项命令为,注意,这里是Reconfigure,不是Reconfigure WITH OVERRIDE,这里有一个重要的原因,后面对提到。

-- Enable "contained database authentication"
Exec sp_configure 'contained', 1;
Reconfigure;

-- Disable "contained database authentication"
Exec sp_configure 'contained', 0;
Reconfigure;

通过图形界面:


第二层保护:

如果你启用了包含数据库选项,那么当还原一个包含数据库时,不会有任何警告或是提示。只能由你自己来确定还原的数据库是不是包含数据库,幸运的是,有一个内置的结构可以知道这点,在SQL Server 2012,当你执行RESTORE HEADERONLY时有一个新的列被增加,它就是Containment ,当它为1时,表明是包含数据库,反之则不是,如下图我对一个包含数据库做的检查:

最后一层保护:
假设有这样一个灾难恢复场景,你需要尽快的恢复一个数据库上线,但是当你把它还原到一台替代服务器上时,你发现它是一个包含数据库。现在让我们假设你还没有意识到已经启用了这个设置,而且就你的能力和可以查阅的文档,你会认为这个数据库没有使用包含用户,再者,假设可能有一些法规或者安全策略,在没有确切有效文档支持情况下,不能有包含用户,但是你可能暂时没有时间去找到相关人去解释为什么存在包含用户,现在你又需要尽快的恢复数据库又要遵守安全策略。

在这种情况下,你可以做的就是先启用包含数据库选项,再恢复数据库,然后再禁用掉。

在禁用时,会报错,需要我们使用WITH OVERRIDE,这其实就是最后一个保护,这就是之前用Reconfigure而不用Reconfigure WITH OVERRIDE的原因。

-- Disable "contained database authentication"
Exec sp_configure 'contained', 0;
Reconfigure;
Configuration option 'contained database authentication' changed from 1 to 0. Run the RECONFIGURE statement to install.
Msg 12818, Level 16, State 1, Line 3
RECONFIGURE failed. Attempting to change the 'contained database authentication' value to 0 while there are existing contained databases requires a RECONFIGURE WITH OVERRIDE.
-- Force disabling of "contained database authentication"
Reconfigure With Override;
Command(s) completed successfully.