我有一个问题,我正在寻找最佳实践建议/尽我所能使这一工作。
我需要想出一种方法来自动从许多名不详的场外数据库中获取备份,而且有一个表我无法备份。然后,将所有这些备份中的数据合并到一个数据库中,并附加一个列,说明它来自何处。
远程数据库都将运行SQL 2016标准、sql 2012 Enterprise或更新版本。他们不会有SSIS的。本地数据库服务器正在运行SQL2016Standard,可以具有SSIS。
在环顾四周后,我的计划是将一个我无法备份到它自己的文件组中的表分开。然后只备份主文件组,获取发送给我们的文件,然后使用SSIS或监视文件夹进行新备份的服务。从那里恢复备份到一个名为DB的数据库,我可以预先设置,作为一个暂存区域,这样我就可以根据需要合并数据。
之所以希望备份进入我在这里设置的数据库名称,而不一定是在远程站点上,是因为我不能保证数据库的名称,而且我担心服务器上处理这些备份的数据库会发生冲突。
我在这个方法中发现的问题是,我似乎不能只还原主文件组,它或者抱怨名称不同(即使我有替换),或者即使名称相同,它也会抱怨没有从第二个文件组备份文件。即使包含“替换”关键字:“备份集包含现有'TestImport‘数据库以外的数据库的备份,也会出现此错误。”
在此阶段,我有能力尽可能地更改方法,但是从数量未知的未知名称数据库接收备份,并将备份自动化到集中式位置是设置的项。我愿意接受任何人的任何想法。
发布于 2019-03-13 15:41:55
为了只对主文件组进行分段恢复,需要确保满足以下条件:
DROP。即使在REPLACE语句中使用RESTORE DATABASE关键字,这也适用。MOVE子句指定要还原的数据库的主文件组的存储位置。指定位置可以确保不尝试覆盖其他数据库文件,这将导致还原过程中出现错误。我将临时恢复数据库,将数据从还原的数据库复制到永久数据库中,然后删除还原的数据库。根据您问题中的详细信息,一旦您将数据复制到永久位置,就不需要将还原的数据库附加到实例。
我写了一篇博客文章,展示了在现有数据库上执行零碎还原的问题,以及如何在SQLServerScience.com纠正这个问题。
发布于 2019-03-13 23:32:45
考虑到您估计的所有远程数据库的大小以及模式是相同的事实,我建议使用SSIS来处理这个数据移动,而不是备份和恢复。
如果使用SSIS,则可以有一个列出远程服务器和数据库的控制表。然后,包可以读取这个列表并遍历它,将数据从远程数据库获取到本地数据库中。还可以将外键添加到本地数据表中,以标识每个数据行的原始源。
https://dba.stackexchange.com/questions/231955
复制相似问题