使用LocalDB连接成功但备份数据库提示不存在的问题求助
问题根源
通过AttachDbFilename连接LocalDB时,数据库的实际名称不一定等于MDF文件名。你能成功连接是因为LocalDB自动附加了该文件,但备份语句里硬编码的[chance_wms_alco]并非附加后数据库的正确名称,所以触发「数据库不存在」异常。
解决步骤
方法一:动态获取当前连接的数据库名
在连接打开后,获取当前数据库的实际名称,替换备份语句中的数据库名:
string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\DataBase\chance_wms_alco.mdf;Integrated Security=True;Connect Timeout=30"; string backupPath = @"C:\DataBase"; string backupFileName = "backup.bak"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // 获取当前连接的数据库名称 string actualDbName = connection.Database; using (SqlCommand command = connection.CreateCommand()) { // 使用实际数据库名执行备份 command.CommandText = $"BACKUP DATABASE [{actualDbName}] TO DISK = '{backupPath}\\{backupFileName}'"; try { command.ExecuteNonQuery(); } catch (Exception ex) { Console.WriteLine($"Exception : {ex.Message}"); } } }
方法二:直接备份当前连接的数据库
无需指定数据库名,用CURRENT关键字备份当前连接的数据库:
// 替换原CommandText为以下内容 command.CommandText = $"BACKUP DATABASE CURRENT TO DISK = '{backupPath}\\{backupFileName}'";
额外注意:修复字符串转义问题
C#字符串中反斜杠需转义,要么用双反斜杠\\,要么在字符串前加@符号(如代码中所示),避免路径解析错误。
内容的提问来源于stack exchange,提问作者cheboksari
相关产品推荐
相关产品推荐

