Bha*_*rat 2 c# sql-server winforms
我正在创建一个Windows桌面应用程序,但我陷入了需要SO开发人员指导的地步.
我的要求:
我的主要要求是创建一个可以将一个系统的数据库复制到另一个系统的Windows窗体应用程序.
见下面的图片.
我到底尝试了什么?
我成功创建了备份文件并使用C#在本地系统中恢复它,但现在它只适用于本地系统(系统A).
我面临的问题是什么?
我想用C#实现这一点.我可以使用共享文件夹处理所有这些,但不建议这样做.
如何访问在另一个LAN系统中生成的备份,因为我们永远无法访问其他系统的目录.我想我可以用共享文件夹来做,但是有没有其他方法可以复制备份文件并将其存储在运行我的应用程序的系统中.
如何将备份文件还原到另一个LAN系统.据我所知,SQL没有权限从外部本地目录恢复数据库.
有没有其他方法来实现这种(复制数据库)功能?
任何与流程或任何参考相关的帮助将不胜感激.
您可以将DB的备份创建到远程位置.例如,系统B将在System C的共享文件夹中创建备份.然后,您可以在System C上还原备份.您也可以反过来这样做,在系统B上创建共享文件夹,在此文件夹中创建备份并从远程位置恢复System C上的备份.
考虑到你想要完成的事情的性质,我假设如下:
D:\TEST\是共享的\\SYSTEM C\TEST\.如果可以满足所有先前条件,则可以从系统A中的应用程序中对系统B执行以下命令:
BACKUP DATABASE [MyDataBase] TO  DISK = N'\\SYSTEM C\TEST\MyDataBase.bak' WITH NOFORMAT, INIT,  NAME = N'MyDataBase-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
假设\\SYSTEM C\TEST\是D:\TEST\(在System C中,显然是)远程地址,那么,从系统A中的应用程序,您可以在System C上执行以下命令:
RESTORE DATABASE [MyDataBaseCopy] FROM  DISK = N'D:\TEST\MyDataBase.bak' WITH  FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 5
这两个命令都可以从SqlCommand实例中解析出来,一个与System B 连接,另一个与System C连接.
希望能帮助到你.
编辑1
感谢@ PMF的评论,指出可能存在这样的情况,即该解决方案不起作用.如果你遇到这种错误:
Msg 3201, Level 16, State 1, Line 1
Cannot open backup device '\\SYSTEM C\TEST\MyDataBase.bak. Operating system error 5(Access is denied.).
您可以根据您的方案尝试以下选项之一:
| 归档时间: | 
 | 
| 查看次数: | 323 次 | 
| 最近记录: |