我们有一个 SQL Server 2005,其中包含 4 到 5 个数据库,这些数据库每天都会进行外部更新,目前,我们正在备份数据库并连接到不同的服务器并对其进行处理,以确保原始数据库中没有任何内容被删除或更改。
但是这个备份和恢复过程变得很麻烦,所以我查找了几个选项,例如复制服务,但我似乎没有安装复制组件,我试图安装它们,但我只能看到订阅服务,而不是发布者服务,我们使用 sql server 2005 express 版本,复制是最好的选择还是您建议任何其他方法?
如果可以,我们如何获取复制组件?如果不可以,还有哪些其他方法?
提前致谢
答案1
你可能想看看本文在 databasejournal.com 上。特别值得注意的是以下这段话:
您应该记住,默认情况下,复制功能并未包含在 SQL Server 2005 Express Edition 安装中。控制此行为的选项可通过展开安装向导的功能选择页面上的数据库服务节点来访问,并且可以通过为其复制条目分配“将安装在本地硬盘上”值来修改。此外,如果您打算利用连接和复制管理对象 (RMO),则应将相同的设置应用于向导同一页面上的客户端组件节点的连接组件子节点。如果您在初始安装期间错过了这些步骤,只需启动 SQLEXPR32.EXE(或 64 位系统的 SQLEXPR.EXE)即可修改现有实例(有关此过程的背景信息,请参阅我们之前的文章)。
答案2
SQL Express 不提供发布者端的复制服务。这是许可问题。Sql Express 仅允许您订阅现有发布。
您可以决定设置计划备份作业,而不是复制。由于 sql express 中不提供作业管理(我猜您不想支付完整的 Sql Server 许可证),您可以找到允许您管理此类任务的第三方软件。我想您应该在 Google 上搜索“sql express job scheduler”或类似请求。
答案3
复制真的就像用大象枪射苍蝇一样。
为什么不直接用不同的名称恢复数据库呢?例如,您可以使用“MyProductionDB”和“MyTestDB”。然后编写备份和恢复脚本,您只需在想要“刷新”测试实例时运行脚本(请注意,备份和恢复对话框顶部有一个“生成脚本”按钮)。
或者,执行相同的脚本备份/恢复,但如果无法更改数据库名称,则创建一个测试实例。测试实例甚至可以位于同一台物理机器上 - MyComputer\SQLExpress 和 MyComputer\SQLExpressTest。
答案4
复制在这里可能有点过头了,因为它的设计目的更多是持续传输数据,而不仅仅是一个有效的备份副本。显然,有定期复制的方法(快照),但我仍然认为它超出了你想要做的事情的需要。
如果两个数据库实例都在同一台服务器上(或者对公共网络位置可见),那么您只需在第一个实例上安排每日备份,然后在第二个实例上安排 30 分钟后的每日恢复(或任何可行的延迟)。这样,它就会自动发生。
我只是设置了一个更复杂的过程,以防您没有共同的网络位置。源上的批处理文件通过 OSQL 创建备份,然后将其压缩并使用 FTP 脚本通过互联网发送。我们目的地上的另一个脚本在 FTP 接收文件夹中看到该文件,提取它,然后使用 OSQL 恢复它,并在完成后发送电子邮件通知。绝对更复杂,但如果您需要灵活性,这也是一个选择。