在远程 SQL 服务器上使用 C# 从备份文件创建数据库
Create database from backup file using C# on the remote SQL Server
我已经备份了我的数据库。
在我的程序中编辑后,它是一个新的 newDb.bak
文件(在我的电脑上)。
如果我有连接字符串(我知道 ip、登录名和密码),如何在远程 SQL 服务器上恢复这个新数据库?
主要是我必须仅使用 C#(而不是 SQL Server Management Studio)来执行此操作。
不幸的是没有任何直接的方法从本地备份文件远程恢复数据库。
但另一种解决方案是在客户端和服务器都可以访问的某个位置(本地端或服务器端无关紧要)创建一个共享位置。
(更新: 此外,确保将执行还原的 SQL 服务器有权访问您要将备份复制到的目录。– @KSib)
然后从文件恢复数据库:
- 将
newDb.bak
复制到\serverip$sharedfolder\newDb.bak
服务器。
RESTORE DATABASE YOURDB FROM DISK = N'\serverip$sharedfolder\newDb.bak';
如果你想要我可以在C#
.
中分享恢复数据库的源代码
Update:另一种解决方案是创建一个包含varbinary
列的table,通过[=15将本地备份文件内容插入其中=] 或 SqlBulkCopy
然后通过 bcp
将文件内容导出到服务器中的某个位置,例如:
BCP "SELECT FileContent FROM createdTable WHERE ID = 1000" queryout "C:\newDB.bak" -T
然后就可以轻松执行还原命令了!
您还可以创建一个服务器端 StoredProcedure
包含一个事务以获取文件内容作为输入参数并将所有命令作为一个事务执行。
希望对你有所帮助:).
我已经备份了我的数据库。
在我的程序中编辑后,它是一个新的 newDb.bak
文件(在我的电脑上)。
如果我有连接字符串(我知道 ip、登录名和密码),如何在远程 SQL 服务器上恢复这个新数据库?
主要是我必须仅使用 C#(而不是 SQL Server Management Studio)来执行此操作。
不幸的是没有任何直接的方法从本地备份文件远程恢复数据库。
但另一种解决方案是在客户端和服务器都可以访问的某个位置(本地端或服务器端无关紧要)创建一个共享位置。 (更新: 此外,确保将执行还原的 SQL 服务器有权访问您要将备份复制到的目录。– @KSib) 然后从文件恢复数据库:
- 将
newDb.bak
复制到\serverip$sharedfolder\newDb.bak
服务器。 RESTORE DATABASE YOURDB FROM DISK = N'\serverip$sharedfolder\newDb.bak';
如果你想要我可以在C#
.
Update:另一种解决方案是创建一个包含varbinary
列的table,通过[=15将本地备份文件内容插入其中=] 或 SqlBulkCopy
然后通过 bcp
将文件内容导出到服务器中的某个位置,例如:
BCP "SELECT FileContent FROM createdTable WHERE ID = 1000" queryout "C:\newDB.bak" -T
然后就可以轻松执行还原命令了!
您还可以创建一个服务器端 StoredProcedure
包含一个事务以获取文件内容作为输入参数并将所有命令作为一个事务执行。
希望对你有所帮助:).