Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server从C#备份和还原问题_C#_Sql Server_Tsql_Sql Server 2008_.net 4.0 - Fatal编程技术网

SQL Server从C#备份和还原问题

SQL Server从C#备份和还原问题,c#,sql-server,tsql,sql-server-2008,.net-4.0,C#,Sql Server,Tsql,Sql Server 2008,.net 4.0,我已经用C语言编写了一个程序来使用SQL 2008 我想备份数据库并还原它。我的备份代码工作正常,但恢复不起作用,数据库变成单用户 获取以下错误: 数据库日志的尾部 “医生”一词尚未得到证实。使用 使用NORECOVERY进行备份的备份日志 日志,如果它包含您不需要的工作 我想输。与REPLACE或REPLACE一起使用 使用RESTORE的STOPAT子句 语句只覆盖 日志的内容。还原数据库 正在异常终止。 不合格的交易正在进行中 向后滚。估计回滚 我的代码: private void Bac

我已经用C语言编写了一个程序来使用SQL 2008

我想备份数据库并还原它。我的备份代码工作正常,但恢复不起作用,数据库变成单用户

获取以下错误:

数据库日志的尾部 “医生”一词尚未得到证实。使用 使用NORECOVERY进行备份的备份日志 日志,如果它包含您不需要的工作 我想输。与REPLACE或REPLACE一起使用 使用RESTORE的STOPAT子句 语句只覆盖 日志的内容。还原数据库 正在异常终止。 不合格的交易正在进行中 向后滚。估计回滚

我的代码:

private void Backup(string strFileName)
{
    try
    {
        string command = @"BACKUP DATABASE doctor TO DISK='"+ strFileName+"'";
        SqlCommand oCommand = null;
        SqlConnection oConnection = null;
        oConnection = new SqlConnection("Data Source=.;Initial Catalog=doctor;Integrated Security=True");
        if (oConnection.State != ConnectionState.Open)
        oConnection.Open();
        oCommand = new SqlCommand(command, oConnection);
        oCommand.ExecuteNonQuery();


    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}   

private void Restore(string strFileName)
{
    try
    {
        string command = "ALTER DATABASE doctor SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master " + " RESTORE DATABASE doctor FROM DISK='" + strFileName + "'";
        SqlCommand oCommand = null;
        SqlConnection oConnection = null;
        oConnection = new SqlConnection("Data Source=.;Initial Catalog=doctor;Integrated Security=True");
        if (oConnection.State == ConnectionState.Closed)
        {
            oConnection.Open();
            oCommand = new SqlCommand(command, oConnection);
            oCommand.ExecuteNonQuery();               
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
我想如果你

“替换为”


使用还原字符串可以正常工作。

您遇到的错误是一个
MSSQLSERVER_3159
错误,可以在上找到解释和用户操作


希望有帮助。

看起来您的数据库正在使用完全恢复模式,在正常情况下需要日志备份

根据你的情况,尼玛的答案可能就足够了

有关此主题的更多信息,请参阅MSND上的以下主题: