C# C语言中数据库还原问题#

C# C语言中数据库还原问题#,c#,sql,sql-server,database,database-restore,C#,Sql,Sql Server,Database,Database Restore,我已经定义了每一件事,这段代码是我代码的一部分 if (Sql_Conn == null) Sql_Conn = new SqlConnection(Str_Con); // str_con is my connection string if (Sql_Conn.State != ConnectionState.Open) Sql_Conn.Open(); Data_Table = new DataTable(); DataA_dapter = new SqlDataAdap

我已经定义了每一件事,这段代码是我代码的一部分

if (Sql_Conn == null)
    Sql_Conn = new SqlConnection(Str_Con);
// str_con is my connection string

if (Sql_Conn.State != ConnectionState.Open)
   Sql_Conn.Open();

Data_Table = new DataTable();
DataA_dapter = new SqlDataAdapter();

Sql_Cmd = new SqlCommand();
Sql_Cmd.Connection = Sql_Conn; // 

string sql = "RESTORE DATABASE  [" + str_directory + "] From DISK = " +
                        "'" + strFileName + "' ; ";
// str_directory is the source of my database as DB.MDF
// srtFileName is the directory of DB.bak
Sql_Cmd.CommandType = CommandType.Text;
Sql_Cmd.CommandText = sql;

try
{
    Sql_Cmd.ExecuteNonQuery();
}
catch (SqlException Error_Exception)
{
   MessageBox.Show("Error");
}
当我在sql Server中使用带有新查询的
字符串sql
时,我没有问题,数据库恢复成功,但当我将此代码与c#一起使用时,我看到了此错误

错误:{System.Data.SqlClient.SqlException:无法还原 处理数据库“E:/DB.mdf”,因为此会话正在使用它。它 建议在执行此操作时使用主数据库 操作。还原数据库正在异常终止

我想恢复我的数据库。我必须在我的第一个代码打开连接,当我想恢复我的数据库时,我看到异常


现在,我如何恢复数据库?请帮助我。

您无法恢复连接到的确切数据库。正如错误消息所述,您应该使用
主数据库


在连接字符串中使用
database=master

您需要连接到不同于您尝试还原的数据库。在连接字符串中设置不同的数据库(初始目录),连接,然后运行代码


对于相同的问题。

检查连接字符串。如果它包含初始目录设置,请将其设置为Master。

问题在于,正在初始化连接字符串,并将初始目录(或数据库)设置为要还原的数据库。这会导致连接处于活动状态(您可以通过执行sp_who2系统存储过程来检查这一点),从而禁止您执行还原。您应该设置初始目录(或数据库)主数据库的连接字符串中的值。这将使您的目标数据库没有连接,并允许您执行还原过程。

可能重复谢谢。但是如何打开主数据库以及此数据库的连接字符串。我这样做了,但我看到此错误:>尝试附加自动命名的database for file master.mdf失败。存在同名数据库,或无法打开指定的文件,或该文件位于UNC Share上。您的连接字符串应该是这样的谢谢。但是如何打开master数据库以及该数据库的连接字符串是什么。我这样做了,但我看到以下错误:>尝试附加自动-文件master.mdf的命名数据库失败。存在同名数据库,或无法打开指定的文件,或该文件位于UNC上share@MasoudAbasian,你能显示你的连接字符串(没有密码!)吗?