我在我的组织中看到的关于 DBA 执行的“实践”之一是将使用exp/ 等工具的完整数据库导出expdp视为备份。
这是一个很好的做法吗?与这种方法相比,使用 RMAN 有什么优势?
据我所知,有三种可能的方式来备份您的 SQL Server 数据库
每种策略的优缺点是什么,应该在什么情况下使用?
我使用的是在 SQLServer 2008 上运行的产品。可以理解,提供它的公司不提供 SQLServer 支持。当我安装产品时,我指定了一个密码来加密数据库。我想在另一台服务器上运行该产品的另一个副本以进行测试。我已将数据库恢复到另一台服务器并在另一台服务器上安装了该产品。当我安装它时,我提供了相同的密码,然后从主服务器恢复了一个备份。但是我收到错误消息:
System.Data.SqlClient.SqlException: An error occurred during decryption.
Run Code Online (Sandbox Code Playgroud)
从产品。我可以使用 SQLServer Management Studio 访问这些表。
我试过这个:
在第一台服务器上:
CREATE CERTIFICATE cert1 WITH SUBJECT = 'Certificate for my stuff'
BACKUP CERTIFICATE cert1 TO FILE = 'd:\backup\cert1.dat'
WITH PRIVATE KEY
(
ENCRYPTION BY PASSWORD = 'mypassword',
FILE = 'd:\backup\cert1_privatekey.dat'
)
Run Code Online (Sandbox Code Playgroud)
在第二台服务器上:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mypassword'
CREATE CERTIFICATE cert1 FROM FILE = 'd:\cert1.dat'
WITH PRIVATE KEY
(
FILE = 'd:\cert1_privatekey.dat',
DECRYPTION BY PASSWORD = 'mypassword'
)
Run Code Online (Sandbox Code Playgroud)
我也在第二台服务器上试过这个:
alter …Run Code Online (Sandbox Code Playgroud) 每个月我们都会制作生产数据库的月末快照。这些月末快照严格用于报告目的,没有对其进行任何插入、更新或删除。这些快照中的每一个都有一个.MDF和.LDF文件。
我想删除.LDF文件并释放服务器上的一些空间。我需要保留.LDF文件有什么原因吗?
澄清:
我们的生产数据库每晚从另一个系统的文件提取中重新创建。我们只报告生产数据库......从来没有更新过。
每晚流程:据
我所知......
每天晚上数据库表都会被截断
这些表通过一系列批量插入语句填充
索引被重建
我正在尝试对外部磁盘进行简单备份并收到此错误:
服务器“服务器名称”的备份失败
附加信息:
System.Data.SqlClient.SqlError:加载在“C:\Program Files\Microsoft SQL..”上的媒体被格式化为支持 1 个媒体系列,但根据备份设备规范需要 2 个媒体系列。(Microsoft.SqlServer.Smo)`
备份类型:完整
为什么我会收到此错误,为什么消息指向C:\Program Files..目标文件是外部设备?
我一直在对压缩和存储 SQL Server 备份的不同方法进行一些测试(使用 SQL Server 2008 R2 企业版),我想知道最有效的压缩算法是在 SQL 之外长期存储这些备份内部压缩算法。
我不担心物理存储或磁带驱动器或任何东西,只是试图将我们的 3TB 数据和日志文件变成最小的单个文件。
那么,例如,是 .zip 还是 .7z?或者我的数据库中有太多变量无法准确估计什么是最有效的,而我只需要做一些测试?或者 SQL Server 的内部压缩是我能得到的最好的吗?
我想说的是,我每天都在日志文件中收到消息。
首先 I/O 被冻结在数据库 (DatabaseName) 消息出现在日志中。消息就像
I/O 在数据库 (DatabaseName) 上被冻结。不需要用户操作。但是,如果 I/O 没有立即恢复,您可以取消备份。
然后 I/O 在 Database(DatabaseName) 消息上恢复,如下所示
数据库 (DatabaseName) 上的 I/O 已恢复。无需用户操作。
最后备份已经成功完成了数据库,就像这条消息
无需用户操作
这是我的生产审计数据库,软件环境如下:
Windows Server 2012 R2
SQL Server 2012
VMware Tools
Run Code Online (Sandbox Code Playgroud)
我的生产数据库“恢复模式”是“完整”恢复模式。并从 SQL Server 中的哪个登录 ID 设置维护计划备份。它对所有数据库具有“系统管理员”权限。
备份已通过“维护计划”备份在特定时间安排(例如每天下午 4 点)进行设置。并且 Always Backup 在他们的计划时间间隔内成功完成。
为什么在计划备份时间会生成这种日志消息。这种消息是否会影响我的生产数据库性能。我的生产数据库中的(备份/恢复)数据一致性会有任何问题。
任何建议将不胜感激。
当我使用以下查询监控我的备份时:
SELECT command, percent_complete,
'elapsed' = total_elapsed_time / 60000.0,
'remaining' = estimated_completion_time / 60000.0
FROM sys.dm_exec_requests
WHERE command like 'BACKUP%'
or command like 'RESTORE%'
Run Code Online (Sandbox Code Playgroud)
我注意到在备份之前,SQL Server 只在备份之后执行还原标头。
我想知道它有什么用处,以及它的执行时间是否可以以某种方式减少。它似乎比实际备份花费的时间更长。
通常,当我们开始备份时,我们不允许提交更改,否则将无法访问数据库。我的意思是数据库将处于单用户模式,但我想开始备份并释放数据库以供使用。此外,一旦我开始备份,我不希望将正在进行的更改写入备份文件。我想知道如何在 Microsoft SQL Server 2012 中实现这一点。请帮助我。
好吧,让我先解释一下我的问题。目前我将数据库设置为单用户模式,直到备份完成。这种模式将有助于我在备份过程中避免数据更改的目的。但是我的应用程序与多个数据库相关联(每个数据库相互关联,并且有每个月不断创建的 var dbs)。因此,备份所有这些数据库已成为乏味的过程,更重要的是,在进行备份时,我必须将用户排除在系统之外。
因此,我正在寻找满足以下要求的备份机制。
我想要的是 - 在给定时间备份所有数据库。
在我们的环境中,网络存储空间不足。同时,我想确保我们每 15 分钟进行一次事务日志备份,而不是每 6 小时一次。我的问题是将日志备份间隔从 6 小时更改为每 15 分钟会消耗更多磁盘空间吗?
backup ×10
sql-server ×8
compression ×1
datafile ×1
disk-space ×1
network ×1
oracle ×1
restore ×1