我无法创建保存在C:\database\mydb.mdf
错误:无法创建备份
Backup sqlBackup = new Backup();
sqlBackup.Action = BackupActionType.Database;
sqlBackup.BackupSetDescription = "ArchiveDataBase:" +
DateTime.Now.ToShortDateString();
sqlBackup.BackupSetName = "Archive";
sqlBackup.Database = databaseName;
BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File);
//ServerConnection connection = new ServerConnection(serverName, userName, password);
ServerConnection connection = new ServerConnection(serverName);
Server sqlServer = new Server(connection);
Database db = sqlServer.Databases[databaseName];
sqlBackup.Initialize = true;
sqlBackup.Checksum = true;
sqlBackup.ContinueAfterError = true;
sqlBackup.Devices.Add(deviceItem);
sqlBackup.Incremental = false;
sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;
sqlBackup.FormatMedia = false;
sqlBackup.SqlBackup(sqlServer);
string dataBaseName = @"C:\database\mydb.mdf";
string serverName = @"Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True";
string destinationPath = "C:\\mydb.bak";
也许我传递了错误的变量?
请任何人都可以验证并向我发布正确的解决方案
提前thnx。PS:数据库没有密码保护,可以使用混合身份验证
答案 0 :(得分:0)
首先 - 我猜你的一些参数是错误的:
ServerConnection connection = new ServerConnection(serverName);
在这里,您需要传递服务器的名称 - 所以在您的情况下,不要发送整个连接字符串 - 只需.\SQLExpress
至于您的数据库名称 - 我不知道您是否可以使用SMO备份SQL Server中的“附加”MDF文件 - 通常,这将是数据库名称(数据库的名称仅< / strong> - 没有文件名,没有扩展名)当数据库在服务器时。
string dataBaseName = @"C:\database\mydb.mdf";
所以我的建议是:
mydb
然后在此处使用数据库名称作为您的值:
string dataBaseName = "mydb";
有了这些点,你的代码在我的情况下可以正常工作,至少......