使用C#在远程服务器上还原SQL Server数据库

时间:2019-05-03 10:29:50

标签: c# sql-server

我需要编写一个C#程序来在远程计算机上还原SQL Server数据库,而我需要在本地计算机上执行此操作。我的代码正在还原数据库,但是我需要使用“从磁盘”在远程计算机上放置备份.bak文件的路径。

string sql =  "ALTER DATABASE [" + MyDatabaseName + "] ; Restore Database [" + MyDatabaseName + "] From Disk= '" + pathToBackupAtRemoteComputer +   "'WITH REPLACE;"
  1. 当我使用SQL Server Management Studio删除数据库并运行代码时,出现错误消息,指出数据库不存在或我没有权限。我要第一:删除数据库,第二:创建新数据库,第三:从备份文件放入数据。是否可以编写类似以下内容的选项:“如果不存在则丢弃模式”或“如果不存在则创建数据库”(例如在MySQL中)?我试过了,但是没用。

  2. 是否可以在本地计算机上使用.bak文件(例如在MySQL中,当我在本地计算机上将.sql文件传输到字符串中然后远程还原数据库时)?还是可以使用C#应用程序将.bak文件从本地发送到远程计算机,然后自动执行?我使用PsExec进行了尝试,但是没有选择在两台计算机之间传输文件。

2 个答案:

答案 0 :(得分:0)

在SQL Server 2016及更高版本的SQL Server中可以使用

DROP DATABASE IF EXISTS

由于是执行还原的SQL Server数据库引擎,因此备份文件必须可供远程SQL Server访问,并且可能是UNC路径。

答案 1 :(得分:0)

删除数据库的一种方法是使用以下内容:

USE master;
ALTER DATABASE [MyDatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [MyDatabaseName] ;

这样,它将删除数据库以及物理文件.ldf和.mdf文件。另一件事是,您还可以重命名数据库(并且可以将数据库与已还原的数据库进行比较)

关于重命名数据库逻辑和物理文件的好文章在这里:

https://www.mssqltips.com/sqlservertip/1891/steps-to-rename-a-sql-server-database/