这是我的代码来备份我的数据库我跟着this tutorial,你可以看到,代码是相同的。填写变量后出现错误。我得到的错误是使用SMO备份SQL Server 2005数据库与C#Windows窗体应用程序,备份失败
服务器'RITZEL-PC \ SQLEXPRESS'的备份失败。
备份功能:
public void BackupDatabase(String databaseName, String userName, String password, String serverName, String destinationPath)
{
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);
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);
}
按钮点击
private void BackUp_Btn_Click(object sender, EventArgs e)
{
String databaseName = @"D:\MY_THESIS\WORKING FILES\NNIT-RMS.mdf";
String userName = "NNIT-Admin";
String password = "password";
String serverName = @"RITZEL-PC\SQLEXPRESS";
String destinationPath = @"D:\";
BackupDatabase(databaseName,userName,password,serverName,destinationPath);
}
数据库信息 我不允许张贴图片,但是我已经上传的屏幕截图。在这里看到:http://img268.imageshack.us/img268/9250/sqlg.jpg
当数据库连接到SQL Server Express时,'databaseName'应该是数据库的**逻辑数据库名称** 'MYDATABASE' - 而不是** .mdf'文件的整个文件名。我不认为SMO允许你备份一个单独的'.mdf'文件 – 2012-01-15 10:26:52
如果你看看我上面发布的屏幕截图,我放置了一个我想备份的数据库的数据库信息的屏幕截图。这是sqlserver2005中数据库节点上出现的名称。我做错了吗? – RMSP 2012-01-15 10:35:55
我在说:你不能用SMO备份“独立”的'.mdf'文件。您需要**将'.mdf'文件附加到您的SQL Server Express,给它一个** logical **数据库名称,然后将该逻辑数据库名称用于SMO备份。这整个“随时”附加.mdf“功能有点混乱,坦率地说不应该使用 - 并且将在SQL Server 2012(”Denali“)中停用。 – 2012-01-15 10:37:45