gpt4 book ai didi

c# - 使用 SMO 备份数据库

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:21 27 4
gpt4 key购买 nike

我创建了一个类来备份数据库,代码是:

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 Server 没有任何备份。有没有办法指定以哪个用户身份运行备份?

最佳答案

您可能必须在 SQL Server 计算机上将正确的文件名设置为本地路径。例如,不要使用 \\ServerName\Whatever,而是使用 c:\Whatever。确保您生成的文件名不包含非法字符,例如 \ 或其他内容。

关于c# - 使用 SMO 备份数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45798407/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com