在代码中复制SQL Server数据库

时间:2009-09-25 13:02:24

标签: c# sql-server

我有两个SQL Server连接字符串,CX和CY。

我需要做的是

  1. 确保CY中没有表格。
  2. 备份数据库CX。
  3. 将其恢复为CY。
  4. 还没找到我要找的东西。我不想要一个工具来执行此操作,我需要在运行时使用C#代码执行此操作,因为添加新客户端的操作需要将主数据库复制到空DB。我不能使用预制脚本,因为我还需要复制数据,主数据库可能在添加新客户端之前几秒就已更新。

    === UPDATE ===

    我正在使用Smo.Backup和Smo.Restore。当我尝试恢复时,我得到:

    错误3154备份集包含现有数据库以外的数据库的备份。

    谁能告诉我如何解决这个问题?除此之外,我有一个有效的解决方案!

    由于

    皮特

4 个答案:

答案 0 :(得分:8)

数据库备份解决方案:

1)确保没有表格

select COUNT(*) from sys.sysobjects where xtype = 'U'

2)备份

BACKUP DATABASE MyFirstDatabase TO DISK= @path WITH FORMAT

3)恢复

RESTORE DATABASE MySecondDatabase   FROM DISK = @path WITH REPLACE

有关详细信息,请参阅SQL联机丛书:http://msdn.microsoft.com/en-us/library/ms186865.aspx

答案 1 :(得分:1)

您可以使用SQL Server管理对象(SMO)。查看http://msdn.microsoft.com/en-us/library/ms162169.aspx。有关备份数据库的具体信息位于http://technet.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.backup.aspx

答案 2 :(得分:0)

我理解您希望在C#代码中执行此操作,但我真的认为只是调用命令行工具为您执行此操作将是最简单的。

那就是说,this guy有一个看起来像你想要的脚本。您可以将其包装在SPROC中并轻松调用它。

答案 3 :(得分:0)

我认为您需要查看

SqlServer.Management.Smo.Backup  class

另请参阅this technet article,此article可以作为参考,具体取决于您的具体需求。