【问题标题】:Invalid database name specified for backup or restore operation in when database path is long数据库路径较长时为备份或还原操作指定的数据库名称无效
【发布时间】:2015-02-07 14:25:10
【问题描述】:

我有一个路径很长的数据库:

C:\\Users\\UserName\\AppData\\Local\\Apps\\2.0\\ZV0DG5JM.3OH\\XQ31WEZB.OKA\\camman.exe_af50f6b9afda55f2_0001.0005_none_2c544a12b9bb2c09\\CameraManDB.mdf

我使用以下代码进行备份:

public void BackupDatabase(string filePath, string DbPath)
{
    using (CameraManDBEntities dbEntities = new CameraManDBEntities())
    {
        string backupQuery = @"BACKUP DATABASE @DbPath TO DISK = N'{0}'";
        backupQuery = string.Format(backupQuery, filePath);

        dbEntities.Database.SqlQuery<object>(backupQuery, new SqlParameter("DbPath", DbPath)).ToList().FirstOrDefault();
    }
}

当我调用以下方法时:

BackupDatabase(BackUpFileName, @"C:\Users\Mahmood\AppData\Local\Apps\2.0\ZV0DG5JM.3OH\XQ31WEZB.OKA\camman.exe_af50f6b9afda55f2_0001.0005_none_2c544a12b9bb2c09" + "\\CameraManDB.mdf");

它抛出这个异常:

为备份或还原操作指定的数据库名称“C:\Users\Mahmood\AppData\Local\Apps\2.0\ZV0DG5JM.3OH\XQ31WEZB.OKA\camman.exe_af50f6b9afda55f2_0001.0005_none_2c544a12b9bb2c09\CameraManDB.mdf”无效。\r\ nBACKUP DATABASE 异常终止。

我认为这很简单,但我找不到任何关于长标识符的明显解决方案。

感谢您的指导!

【问题讨论】:

    标签: c# sql-server-2012


    【解决方案1】:

    您收到错误是因为您在参数@DbPath 中传递了数据库的物理路径,但随后在BACKUP 中指定数据库的位置使用该参数名称。这个数据库显然不存在,所以报错。

    您需要按如下方式进行更改:

    public void BackupDatabase(string filePath, string dbName)
    {
        using (CameraManDBEntities dbEntities = new CameraManDBEntities())
        {
            string backupQuery = @"BACKUP DATABASE @DbName TO DISK = N'{0}'";
            backupQuery = string.Format(backupQuery, filePath);
    
            dbEntities.Database.SqlQuery<object>(backupQuery,
                new SqlParameter("DbName", dbName)).ToList().FirstOrDefault();
        }
    }
    
    BackupDatabase(BackUpFileName, "CameraManDB");
    

    我还将路径作为参数而不是执行动态 SQL,即:

    BACKUP DATABASE @DbName TO DISK = @FilePath
    

    【讨论】:

    • 对不起!我忘了提到我使用 sql localdb。它对我不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多