首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以最高效、最简单的方式每小时备份特定表的一部分

以最高效、最简单的方式每小时备份特定表的一部分
EN

Stack Overflow用户
提问于 2018-02-09 05:04:10
回答 1查看 105关注 0票数 1

我需要从SQL Server数据库中创建一些特定表的每小时.SQB备份文件,每个表都使用WHERE子句进行筛选。例如,我需要以下数据:

代码语言:javascript
复制
SELECT * FROM table1 WHERE pk_id IN (2,5,7)
SELECT * FROM table2 WHERE pk_id IN (2,5,7)
SELECT * FROM table3 WHERE pk_id IN (2,5,7)
SELECT * FROM table4 WHERE pk_id IN (2,5,7)

源数据库上的表的结构可以随时间改变,例如,可以添加或删除列、添加索引等。

一种选择是对同一SQL Server实例上的临时数据库执行某种导出、脚本生成等操作。抛开效率不谈,每次删除或截断目标数据库上的表都没有问题。简而言之,我希望将表的模式和数据复制到目标数据库。这是完全可以接受的。

另一种方法是仅从源数据库创建.SQB备份。因为.SQB文件就是我真正需要的(它将被发送到SFTP) --那也很好。

在这种情况下,推荐的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-02-09 06:17:47

如果我没理解错的话,您希望将数据库中某些表的数据定期传送到其他地方。

  1. 中不可能做的事情是备份数据库中的表的子集。所以,这不是一种选择。
  2. 由于您已经提到将使用SFTP发送数据,因此使用BCP命令提取数据是一种选择,但BCP命令可能执行得很好,也可能不会执行得很好,而且它肯定不会很好地向外扩展。
  3. 除了使用BCP,我更喜欢SSIS包,你将能够在你的SSIS包中做所有的事情(提取文件,添加where子句,在SFTP上删除文件,调整你的查询,日志记录,监控等)。
  4. 最后,SQL Server复制可用于创建订阅服务器,只发布您感兴趣的项目(表),还可以在发布中添加where子句。

同样,复制订阅服务器数据库也有几个选项。

  • 允许访问您的数据客户端到您的订阅者数据库,不需要提取。
  • 在订户数据库上使用BCP来提取数据,而不会给生产服务器带来负载。
  • 使用SSIS包从订阅者数据库中提取数据。
  • 最终创建了此订户数据库的备份,并将整个备份(.bak)文件发送到SFPT。

我简短地说,有不止一种方法可以解决问题,现在你必须决定哪一种最适合你的要求。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48694757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档