0

我被困在 sql server 的一个地方。我们有 100 多个数据库(.mdf)。我想将 mdf 文件中的更新数据复制到另一个位置。假设我第一次从位置C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA分离所有数据库并将它们复制到另一个位置说C:\并重新附加所有原始文件(由于 sql server 使用而分离)。现在我在C盘有副本。我想要一个查询或步骤来定期将所有数据库中的更新数据从我的原始位置复制到复制的位置(位于 c 驱动器中)。我已经对此进行了谷歌搜索,并找到了首先停止您的服务的解决方案。但我不能这样做,因为在我的公司 24 小时轮班和定期更新数据。所以没有机会这样做。而且我已经用批处理文件对其进行了测试。

xcopy /y /d /r /s /e "C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\TestAxle.mdf" "c:\TestAxle.mdf"

但它显示错误消息共享破坏 也使用以下命令进行了测试:

复制 /y "C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\TestAxle.mdf" "c:\TestAxle.mdf"

但它也显示该文件正在被另一个进程使用。

请告诉我如何定期复制 mdf 文件中的更新数据。

谢谢

4

1 回答 1

1

在我看来,这听起来像是您正在尝试创建备份。如果是这种情况,请改用备份命令。虽然它不会创建“mdf”文件,但备份将包含原始 mdf 文件包含的所有内容,包括未使用页面的内容。

CREATE BACKUP您可以使用命令 ( http://msdn.microsoft.com/en-us/library/ms187510(v=sql.105).aspx )进行备份,而无需关闭服务或以其他方式阻止对数据库的访问。(在大多数情况下,甚至没有明显的性能影响。)

还要记住,SQL Server 备份保证在事务上是一致的。不能保证 mdf 文件的副本(至少在没有其 ldf 文件的情况下保留)在事务上是一致的。

由于文件已被服务锁定,因此无法获取 mdf 文件的实际副本。我能想到的唯一方法是 SAN 复制。

如果这两个选项在您的案例中不起作用,请报告您通过拥有这些副本试图实现的目标。

于 2013-07-15T12:51:07.750 回答