在代码中复制SQL Server数据库
我有两个SQL Server连接字符串,CX和CY。
我需要做的是
- 确保CY中没有表格。
- 备份数据库CX。
- 将其恢复为CY。
还没找到我要找的东西。 我不想要一个工具来执行此操作,我需要在运行时使用C#代码执行此操作,因为添加新客户端的操作需要将主数据库复制到空DB。 我不能使用预制脚本,因为我还需要复制数据,并且主数据库可能在添加新客户端之前几秒就已更新。
=== UPDATE ===
我正在使用Smo.Backup和Smo.Restore。 当我尝试恢复时,我得到:
错误3154备份集包含现有数据库以外的数据库的备份。
谁能告诉我如何解决这个问题? 除此之外,我有一个有效的解决方案!
谢谢
皮特
数据库备份解决方案:
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
您可以使用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 。
我理解您希望在C#代码中执行此操作,但我真的认为只是调用命令行工具来为您执行此操作将是最简单的。
也就是说, 这家伙有一个看起来像你想要的脚本。 您可以将其包装在SPROC中并轻松调用它。
我想你需要调查一下
SqlServer.Management.Smo.Backup class
另请参阅此technet文章 ,根据您的具体需求, 本文可以作为参考。