简单的问题。我正在处理一个SQL Server数据库,该数据库在多个办公室之间共享。每个办公室在这个数据库中都有自己的模式,因此将数据库划分为逻辑部分。(外加一个在多个办公室之间共享的架构。)数据库存储在专用服务器上,我们使用单个数据库来简化备份/恢复过程。
然而,问题是,会计处可能正在修改大量数据,然后局长办公室犯了一个错误,需要恢复备份。不幸的是,恢复备份意味着Accounting将丢失他们最近添加的数据。
因此,另一种解决方案是将备份恢复到新数据库中,从旧记帐方案中删除数据,并仅从备份顶部的原始数据库中移动记帐数据。这是当前的解决方案,既耗时又容易出错。
那么,有没有一种方法可以备份单个模式,可能是通过代码?然后恢复该模式,可能也是通过代码?
发布于 2010-05-12 21:09:44
您可以创建一个脚本,将每个模式复制到一个单独的数据库(backup_Accounting、backup_Secretary、backup_Shared),然后为每个数据库创建一个备份文件。如果需要进行恢复,可以将备份文件恢复到相应的数据库中,然后运行脚本将数据复制回主数据库中。
发布于 2010-05-12 21:17:13
您可以使用文件组和部分备份命令。
您需要将每个模式移动到不同的文件组,然后根据需要使用部分备份/恢复。
有关部分备份的信息,请参阅此处:http://msdn.microsoft.com/en-us/library/ms191539.aspx
有关文件组的信息,请参阅此处:http://msdn.microsoft.com/en-us/library/ms179316.aspx
有关逐段还原的信息,请参阅此处:http://msdn.microsoft.com/en-us/library/ms177425.aspx
发布于 2010-05-12 20:59:22
无法仅备份和恢复单个架构。
但是,您可以尝试这种方法:将整个数据库(所有模式)恢复到一个不同的数据库xyz_OLD或类似的东西。
然后,您可以使用如下脚本修复数据:
UPDATE y
SET col1=o.col1
FROM xyz.YourTable y
INNER JOIN xyz_Old.xyz.YourTable o ON y.PK=o.PK
INSERT INTO xyz.YourTable
(col1, col2, col3,...)
SELECT
col1, col2, col3,...
FROM xyz_Old.xyz.YourTable o
WHERE NOT EXISTS (SELECT 1 FROM xyz.YourTable y WHERE o.PK=y.Pk)
etc...https://stackoverflow.com/questions/2816491
复制相似问题