【发布时间】:2023-03-06 02:45:01
【问题描述】:
我有一个 SQL 服务器,其中包含我编写的测试 pp。这件事越来越受到关注,如果 SQL 服务器损坏或有人做了一些愚蠢的事情,我担心会丢失数据(以及用户输入数据所花费的时间)。
我正在考虑我有哪些选项可以将夜间备份作为维护计划,以及我可以做些什么来将数据库复制到另一个 SQL 服务器盒。
有什么好处和坏处?这里的最佳做法是什么?
【问题讨论】:
标签: sql sql-server sql-server-2005
我有一个 SQL 服务器,其中包含我编写的测试 pp。这件事越来越受到关注,如果 SQL 服务器损坏或有人做了一些愚蠢的事情,我担心会丢失数据(以及用户输入数据所花费的时间)。
我正在考虑我有哪些选项可以将夜间备份作为维护计划,以及我可以做些什么来将数据库复制到另一个 SQL 服务器盒。
有什么好处和坏处?这里的最佳做法是什么?
【问题讨论】:
标签: sql sql-server sql-server-2005
如果你只需要保留数据库的结构和内容,那么数据库备份是最好的。
如果您需要使用数据库的副本,请考虑复制。复制需要更多的工作来维护,并且如果只是出于备份原因而存在,则不会提供简单的恢复功能。
【讨论】:
自动备份已回复here。
【讨论】:
【讨论】:
每日完整备份是最好的。如果数据库很小,则不需要保留副本,因为还原时间更短。如果它是一个大型数据库,您可以考虑 logshipping 或 mirroring 。 对于这些,您需要使数据库处于完全恢复模式,并且必须定期设置事务日志备份。 仅当您只对少数表而不是整个数据库感兴趣时,复制才有用,并且在他的情况下它将是事务复制。 维护计划向导有助于设置定期完整备份以及事务日志备份。
【讨论】:
你可以试试Web Deploy tool,它免费且功能强大,可以完成很多任务。
您需要做的就是使用 DbFullSql 提供程序并为源指定一个连接字符串,为目标指定一个文件。 Web Deploy 将使用 SMO 将您的数据库脚本写入文件:
备份数据库架构和数据:>msdeploy.exe -verb:sync -source:DbFullSql="Server=.\SQLExpress;Database=MyDatabase;Integrated Security=true" -dest:dbfullsql="d:\DbBackup.sql"
仅备份数据(设置 ScriptData 属性,如 article 所示):>msdeploy.exe -verb:sync -source:DbFullSql="Server=.\SQLExpress;Database=MyDatabase;Integrated Security=true",ScriptSchema=false,ScriptData=true,ScriptDrops=false -dest:dbfullsql="d:\DbBackup.sql"
【讨论】: