【发布时间】:2017-07-27 16:09:29
【问题描述】:
我已经备份了我的数据库。
在我的程序中编辑后,它是一个新的newDb.bak 文件(在我的电脑上)。
如果我有连接字符串(我知道 ip、登录名和密码),我如何在远程 SQL Server 上恢复这个新数据库?
主要是我只需要使用 C#(而不是 SQL Server Management Studio)来执行此操作。
【问题讨论】:
标签: c# sql-server backup restore
我已经备份了我的数据库。
在我的程序中编辑后,它是一个新的newDb.bak 文件(在我的电脑上)。
如果我有连接字符串(我知道 ip、登录名和密码),我如何在远程 SQL Server 上恢复这个新数据库?
主要是我只需要使用 C#(而不是 SQL Server Management Studio)来执行此操作。
【问题讨论】:
标签: c# sql-server backup restore
很遗憾没有任何直接的方法可以从本地备份文件远程恢复数据库。
但另一种解决方案是在客户端和服务器都可以访问的某个位置(本地端或服务器端无关紧要)创建一个共享位置。 (更新:此外,请确保将执行还原的 SQL 服务器对您将备份复制到的目录具有权限。-@KSib) 然后从文件中恢复数据库:
newDb.bak复制到\\serverip\$sharedfolder\newDb.bak上
服务器。RESTORE DATABASE YOURDB FROM DISK = N'\\serverip\$sharedfolder\newDb.bak';如果你愿意,我可以在C#分享恢复数据库的源代码。
更新:另一种解决方案是创建一个包含varbinary列的表,通过SqlCommand或SqlBulkCopy将备份文件内容从本地插入到它,然后导出文件内容通过bcp 发送到您服务器中的某个位置,如下所示:
BCP "SELECT FileContent FROM createdTable WHERE ID = 1000" queryout "C:\newDB.bak" -T
然后就可以轻松执行恢复命令了!
您还可以创建一个包含事务的服务器端StoredProcedure,以获取文件内容作为输入参数并将所有命令作为一个事务执行。
希望对你有所帮助:)。
【讨论】: