【问题标题】:Restore MS SQL Database from path other than "c:\Program Files\Microsoft SQL\...\Backup"从“c:\Program Files\Microsoft SQL\...\Backup”以外的路径恢复 MS SQL 数据库
【发布时间】:2013-05-13 10:18:46
【问题描述】:

我想通过恢复一个空数据库而不是通过 SQL 创建数据库来减少在本地计算机上创建数据库的工作量。

这是我目前的代码(DataAccess.ApplicationDirectory 是“C:\ProgramData\RC Vehicle Management\”):

 public static void CreateLocalDatabase () {
        const String emptyDatabaseFileName = "EmptyDatabase.bak";

        if(Directory.Exists(DataAccess.ApplicationDirectory) == false) {
            Directory.CreateDirectory(DataAccess.ApplicationDirectory);
        }
        File.WriteAllBytes(Path.Combine(DataAccess.ApplicationDirectory + emptyDatabaseFileName), Resources.RcVehicleManagement);

        using (SqlConnection sqlConnection = DataAccess.LocalMachineConnection()) {
            sqlConnection.Open();
            using (SqlCommand sqlCommand = new SqlCommand("RESTORE DATABASE [@localDatabaseName] " +
                                                          "FROM DISK = '@emptyDatabasePath' " + 
                                                          "WITH NOUNLOAD, REPLACE", sqlConnection)) {
                sqlCommand.Parameters.Add("@localDatabaseName", System.Data.SqlDbType.VarChar).Value = DataAccess.LocalDatabaseConnectionString.InitialCatalog;
                sqlCommand.Parameters.Add("@emptyDatabasePath", System.Data.SqlDbType.VarChar).Value = Path.Combine(DataAccess.ApplicationDirectory, emptyDatabaseFileName);

                sqlCommand.ExecuteNonQuery();
            }
        }
    }

但是在执行时,我得到以下异常(在“sqlCommand.ExecuteNonQuery();”处):

Cannot open backup device 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\@emptyDatabasePath'.
Operating system error 2(failed to retrieve text for this error. Reason: 15105).
RESTORE DATABASE is terminating abnormally.

我不知道为什么要从“c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup”获取备份,我声明的路径是“C:\ProgramData\RC Vehicle Management \EmptyDatabase.bak"

我做错了什么? 还是无法从“c:\Program Files\Microsoft SQL...\Backup”以外的路径恢复?

【问题讨论】:

    标签: c# sql-server database path database-restore


    【解决方案1】:

    我发现了问题,参数不能用括号或引号。

    这行得通:

    SqlCommand sqlCommand = new SqlCommand("RESTORE DATABASE @localDatabaseName " +
                                           "FROM DISK = @emptyDatabasePath " +
                                           "WITH NOUNLOAD, REPLACE", sqlConnection)
    

    【讨论】:

    • 那是非常有选择性的引用。紧接着,您可以阅读:“有关更多信息,请参阅本主题后面的“将文件和文件组恢复到新位置”。“.
    • 这是正确的,但我现在找到了解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2011-12-10
    • 2021-12-12
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多