我需要编写一个C#程序来在远程计算机上还原SQL Server数据库,而我需要在本地计算机上执行此操作。我的代码正在还原数据库,但是我需要使用“从磁盘”在远程计算机上放置备份.bak
文件的路径。
string sql = "ALTER DATABASE [" + MyDatabaseName + "] ; Restore Database [" + MyDatabaseName + "] From Disk= '" + pathToBackupAtRemoteComputer + "'WITH REPLACE;"
当我使用SQL Server Management Studio删除数据库并运行代码时,出现错误消息,指出数据库不存在或我没有权限。我要第一:删除数据库,第二:创建新数据库,第三:从备份文件放入数据。是否可以编写类似以下内容的选项:“如果不存在则丢弃模式”或“如果不存在则创建数据库”(例如在MySQL中)?我试过了,但是没用。
是否可以在本地计算机上使用.bak
文件(例如在MySQL中,当我在本地计算机上将.sql
文件传输到字符串中然后远程还原数据库时)?还是可以使用C#应用程序将.bak文件从本地发送到远程计算机,然后自动执行?我使用PsExec进行了尝试,但是没有选择在两台计算机之间传输文件。
答案 0 :(得分:0)
由于是执行还原的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/