使用SMO备份SQL&;C#?
我正在使用以下代码备份SQL数据库:使用SMO备份SQL&;C#?,c#,.net,sql-server,backup,smo,C#,.net,Sql Server,Backup,Smo,我正在使用以下代码备份SQL数据库: void BackupDatabase(string sConnect, string dbName, string backUpPath) { using (SqlConnection cnn = new SqlConnection(sConnect)) { cnn.Open(); dbName = cnn.Database.ToString(); ServerConnection sc =
void BackupDatabase(string sConnect, string dbName, string backUpPath)
{
using (SqlConnection cnn = new SqlConnection(sConnect))
{
cnn.Open();
dbName = cnn.Database.ToString();
ServerConnection sc = new ServerConnection(cnn);
Server sv = new Server(sc);
// Create backup device item for the backup
BackupDeviceItem bdi = new BackupDeviceItem(backUpPath, DeviceType.File);
// Create the backup informaton
Microsoft.SqlServer.Management.Smo.Backup bk = new Backup();
bk.PercentComplete += new PercentCompleteEventHandler(percentComplete);
bk.Devices.Add(bdi);
bk.Action = BackupActionType.Database;
bk.PercentCompleteNotification = 1;
bk.BackupSetDescription = dbName;
bk.BackupSetName = dbName;
bk.Database = dbName;
//bk.ExpirationDate = DateTime.Now.AddDays(30);
bk.LogTruncation = BackupTruncateLogType.Truncate;
bk.FormatMedia = false;
bk.Initialize = true;
bk.Checksum = true;
bk.ContinueAfterError = true;
bk.Incremental = false;
// Run the backup
bk.SqlBackup(sv);
}
}
在我的系统(Win7 x64)中工作正常,但在目标系统(WinXP SP3 x86)中,我收到以下错误:我怎样才能修好它?
谢谢。32位和64位的sql server dll不同 看起来您的项目正在引用64位dll。当您尝试在只有32位dll可用的计算机上运行它时,会出现“找不到文件”/“无法加载dll”类型错误
如果要在32位计算机上使用此功能,应参考32位版本的sql server dll。如果签出Win7计算机(GAC)上的程序集目录,将看到一个名为Microsoft.SqlServer.ConnectionInfo的条目。(浏览到我的机器上的
%windir%\assembly
)它看起来像这样:
就我而言,我使用的是10.0.0.0版。在您的情况下,您至少会看到版本9.0.242.0,因为这是您的程序编译的依据(我发现您不太可能没有从GAC引用dll)。如果两台计算机上安装的版本不相同,则已发现问题,需要相应地更新客户端库。我认为你可能在XP机器上运行了一个更新的版本,因为你刚刚在那里安装了2008
如果您签出后需要更多帮助,可以在此处发表评论。显然,您需要在服务器上安装程序集。尝试SQL Server客户端安装?是的,我在目标系统中安装了
SQL Express 2008 R2
。没错,我使用的是x64版本,但目标系统是x86。在哪里可以下载x86 windows的较新版本?您想将此问题指向Bhaiji。不过,我很确定这是一个版本问题,因为您无法在每台机器上安装正确的32位或64位版本-安装程序会解决这个问题。那么,我如何修复它呢?我的意思是如何解决版本问题?我会首先检查不同的版本号,并在这里报告它们,同时确保让我们知道是否有多个版本在任何一台机器上运行。您将在%windir%\assembly中看到所有这些。我已经检查了%windir%\assembly
。我有Microsoft.SqlServer.ConnectionInfo的9.0.242.0版和10版。我从%windir%\assembly
手动卸载了版本9:-(现在我的系统中也出现了错误!!!请指导我。您需要将32位dll从32位计算机复制到开发人员计算机,并引用它们,而不是64位dll。请注意,您的程序将仅在32位计算机上运行