使用 SMO 备份数据库
Backing up database with SMO
我创建了一个class备份数据库,代码是:
public bool BackupDatabase(string databasename)
{
bool success = false;
try
{
Backup dbBackup = new Backup();
string SqlInstance = @"SERVER\INSTANCE";
string User = ExtractPureUsername(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
string BackupLocation = @"\SERVER\FOLDER\BACKUPTEST_" + User.ToString() + ".bak";
Server srv = new Server(SqlInstance);
dbBackup.Action = BackupActionType.Database;
dbBackup.Database = databasename;
dbBackup.Devices.AddDevice(BackupLocation, DeviceType.File);
dbBackup.BackupSetName = "Test database backup";
dbBackup.ExpirationDate = DateTime.Today.AddDays(10);
dbBackup.Initialize = false;
dbBackup.PercentComplete += CompletionStatusInPercent;
dbBackup.Complete += Backup_Completed;
dbBackup.SqlBackup(srv);
success = true;
}
catch(Exception ex)
{
Console.WriteLine(ex);
Console.ReadKey();
}
return success;
}
这 运行 结束了,我得到了错误:
Cannot open backup device - Operating System error 5
如果我要 运行 在 SSMS 中引用实例上的备份,我可以备份到指定的 Bakup 位置。所以我假设发生错误是因为备份是作为 运行 正在使用 C# 程序的用户启动的,并且 SQL 服务器拥有 none 的备份。有没有办法指定 运行 备份的用户?
您可能必须在 SQL 服务器计算机上将正确的文件名设置为 本地路径 。例如,使用 c:\Whatever
而不是 \ServerName\Whatever
。确保您生成的文件名不包含非法字符,例如 \
或其他内容。
我创建了一个class备份数据库,代码是:
public bool BackupDatabase(string databasename)
{
bool success = false;
try
{
Backup dbBackup = new Backup();
string SqlInstance = @"SERVER\INSTANCE";
string User = ExtractPureUsername(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
string BackupLocation = @"\SERVER\FOLDER\BACKUPTEST_" + User.ToString() + ".bak";
Server srv = new Server(SqlInstance);
dbBackup.Action = BackupActionType.Database;
dbBackup.Database = databasename;
dbBackup.Devices.AddDevice(BackupLocation, DeviceType.File);
dbBackup.BackupSetName = "Test database backup";
dbBackup.ExpirationDate = DateTime.Today.AddDays(10);
dbBackup.Initialize = false;
dbBackup.PercentComplete += CompletionStatusInPercent;
dbBackup.Complete += Backup_Completed;
dbBackup.SqlBackup(srv);
success = true;
}
catch(Exception ex)
{
Console.WriteLine(ex);
Console.ReadKey();
}
return success;
}
这 运行 结束了,我得到了错误:
Cannot open backup device - Operating System error 5
如果我要 运行 在 SSMS 中引用实例上的备份,我可以备份到指定的 Bakup 位置。所以我假设发生错误是因为备份是作为 运行 正在使用 C# 程序的用户启动的,并且 SQL 服务器拥有 none 的备份。有没有办法指定 运行 备份的用户?
您可能必须在 SQL 服务器计算机上将正确的文件名设置为 本地路径 。例如,使用 c:\Whatever
而不是 \ServerName\Whatever
。确保您生成的文件名不包含非法字符,例如 \
或其他内容。