SQLServerSMO备份数据库进度条不显示的原因

我们今天主要向大家描述的是SQL Server SMO备份数据库进度条不显示这一问题,假如你在实际操作中遇到相似的情况,但是你却不知道对其如何正确的解决,那么以下的文章对你而言一定是良师益友。

创新互联公司是专业的海安网站建设公司,海安接单;提供成都网站建设、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行海安网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

一个奇怪的问题,用SQL Server  SMO备份数据库时不显示进度条,也就是进度条事件PercentComplete不触发。 今天试了一下,果然有点奇怪。

代码如下:
 

 

 
 
 
  1. using Microsoft.SqlServer.Management.Smo;  
  2. using Microsoft.SqlServer.Management.Common;  
  3. private void btnBackup_Click(object sender, EventArgs e)  
  4. {  
  5. btnBackup.Enabled = false;  
  6. Thread tr = new Thread(new ThreadStart(doBackup));  
  7. tr.Priority = ThreadPriority.AboveNormal;  
  8. tr.Start();  
  9. //Thread.Sleep(3000);  
  10. }  
  11. ///  
  12.  

备份数据库

 
 
 
  1. ///  
  2. public void doBackup()  
  3. {  
  4. pbDemo.Value = 0;  
  5. pbDemo.Maximum = 100;  
  6. pbDemo.Style = ProgressBarStyle.Blocks;  
  7. //pbDemo.Step = 10;  
  8. Server srv = new Server(@"(local)");  
  9. Backup backup = new Backup();  
  10. backup.Action = BackupActionType.Database;  
  11. backup.Database = "btnet";  
  12. backup.Incremental = false;  
  13. backup.Devices.Add(new BackupDeviceItem(@"C:\agronet09.bak", DeviceType.File));  
  14. backup.Initialize = true;  
  15. backup.PercentCompleteNotification = 10;  
  16. backup.PercentComplete += new PercentCompleteEventHandler(backup_PercentComplete);  
  17. //backup.Checksum = true;  
  18. backup.SqlBackup(srv);  
  19. }  
  20. public void backup_PercentComplete(object sender, Microsoft.SqlServer.Management.Smo.PercentCompleteEventArgs e)  
  21. {  
  22. this.Invoke(new displayProgress_delegate(displayProgress), e.Percent);  
  23. //Application.DoEvents();  
  24. }  
  25. public delegate void displayProgress_delegate(int progress);  
  26. public void displayProgress(int progress)  
  27. {  
  28. this.lbProgress.Text = "已完成[" + progress.ToString() + " %]";  
  29. pbDemo.Value = progress;  
  30. btnBackup.Enabled = (progress == 100);  
  31. }  

症状如下:结果正确执行,但进度条不显示。
 

刚开始以为是线程问题,后来发现不是这个原因。

又试了另外一段代码
 

 

 
 
 
  1. using Microsoft.SqlServer.Management.Smo;  
  2. using Microsoft.SqlServer.Management.Common;  
  3. using System.Diagnostics;  
  4. static void Main(string[] args)  
  5. {  
  6. BackupDatabase("ap4\\agronet09", "agronet2008", "c:\\Northind_3.bak");  
  7. Console.WriteLine(Environment.NewLine + "Press any key to continue.");  
  8. Console.ReadKey();  
  9. }  
  10. public static void BackupDatabase(string serverName, string databaseName, string fileName)  
  11. {  
  12. Console.WriteLine("*** Backing up ***");  
  13. Server server = new Server(serverName);  
  14. Backup backup = new Backup();  
  15. backup.Action = BackupActionType.Database;  
  16. backup.Database = databaseName;  
  17. backup.Incremental = false;  
  18. backup.Initialize = true;  
  19. backup.LogTruncation = BackupTruncateLogType.Truncate;  
  20. BackupDeviceItem backupItemDevice = new BackupDeviceItem(fileName, DeviceType.File);  
  21. backup.Devices.Add(backupItemDevice);  
  22. backup.PercentCompleteNotification = 10;  
  23. backup.PercentComplete += backup_PercentComplete;  
  24. backup.Complete +=backup_Complete;  
  25. backup.SqlBackup(server);  
  26. }  
  27. protected static void backup_PercentComplete(object sender, PercentCompleteEventArgs e)  
  28. {  
  29. Console.WriteLine(e.Percent + "% processed.");  
  30. //Application.();  
  31. System.Threading.Thread.Sleep(1000);  
  32. }  
  33. protected static void backup_Complete(object sender, ServerMessageEventArgs e)  
  34. {  
  35. Console.WriteLine(Environment.NewLine + e.ToString());  
  36. }  

结果还是不显示。

后来突然想到会不会是文件太小,试了一个200M的数据文件,果然成功显示:

 

后来经反复实验,发现SQL server 2000约在数据文件加日志文件大于6M左右时显示进度条。

而Sql server 2008 r2大约在3M时显示进度条。可能跟机器也有关系。

以上的相关内容就是对SQL Server SMO备份数据库进度条不显示的介绍,望你能有所收获。

【编辑推荐】

  1. SQL Server数据库中可用格式字符串干什么?
  2. SQL Server 连接字符串的实现步骤
  3. SQL Server 连接字符串的一些声明
  4. SQL Server 字符串在实际操作中的注意事项
  5. MS SQL Server 连接字符串的实际操作简介

新闻名称:SQLServerSMO备份数据库进度条不显示的原因
文章URL:http://www.shufengxianlan.com/qtweb/news10/56210.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联