在那种情况下SQL Server数据库中SMO进度条不显示?

此文章主要向大家讲述的是在那种情况下会出现SQL Server数据库中SMO备份数据库进度条不显示,同时存在一个十分奇怪的问题,用SMO备份SQL Server数据库时不显示进度条,也就是进度条事件PercentComplete不触发。

 

今天试了一下,果然有点奇怪。

 

一个奇怪的问题,用SMO备份SQL Server数据库时不显示进度条,也就是进度条事件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. /// <summary> 
  12. /// 备份数据库  
  13. /// </summary> 
  14. public void doBackup()  
  15. {  
  16. pbDemo.Value = 0;  
  17. pbDemo.Maximum = 100;  
  18. pbDemo.Style = ProgressBarStyle.Blocks;  
  19. //pbDemo.Step = 10;  
  20. Server srv = new Server(@"(local)");  
  21. Backup backup = new Backup();  
  22. backup.Action = BackupActionType.Database;  
  23. backup.Database = "btnet";  
  24. backup.Incremental = false;  
  25. backup.Devices.Add(new BackupDeviceItem(@"C:\agronet09.bak", DeviceType.File));  
  26. backup.Initialize = true;  
  27. backup.PercentCompleteNotification = 10;  
  28. backup.PercentComplete += new PercentCompleteEventHandler(backup_PercentComplete);  
  29. //backup.Checksum = true;  
  30. backup.SqlBackup(srv);  
  31. }  
  32. public void backup_PercentComplete(object sender, Microsoft.SqlServer.Management.Smo.PercentCompleteEventArgs e)  
  33. {  
  34. this.Invoke(new displayProgress_delegate(displayProgress), e.Percent);  
  35. //Application.DoEvents();  
  36. }  
  37. public delegate void displayProgress_delegate(int progress);  
  38. public void displayProgress(int progress)  
  39. {  
  40. this.lbProgress.Text = "已完成[" + progress.ToString() + " %]";  
  41. pbDemo.Value = progress;  
  42. btnBackup.Enabled = (progress == 100);  
  43. }  

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

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

又试了另外一段代码

 

  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. C#来对SQL Server存储过程进行创建
  2. SQL Server索引实际结构的理解
  3. 添加Microsoft SQL Server 2000 Desktop Engine
  4. 安装MS SQL Server 2000失败的缘由是什么?
  5. Sql Server 日期格式化之函数GETDATE() 代码

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/232744.html<

(0)
管理的头像管理
上一篇2025-04-20 07:37
下一篇 2025-04-20 07:38

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注