有朋友提到一个奇怪的问题,用SMO备份数据库时不显示进度条,也就是进度条事件PercentComplete不触发。
今天试了一下,果然有点奇怪。
代码如下: using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common; private void btnBackup_Click(object sender, EventArgs e) { btnBackup.Enabled = false; Thread tr = new Thread(new ThreadStart(doBackup)); tr.Priority = ThreadPriority.AboveNormal; tr.Start(); //Thread.Sleep(3000); } /// <summary> /// 备份数据库 /// </summary> public void doBackup() { pbDemo.Value = 0; pbDemo.Maximum = 100; pbDemo.Style = ProgressBarStyle.Blocks; //pbDemo.Step = 10; Server srv = new Server(@"(local)"); Backup backup = new Backup(); backup.Action = BackupActionType.Database; backup.Database = "btnet"; backup.Incremental = false; backup.Devices.Add(new BackupDeviceItem(@"C:/agronet09.bak", DeviceType.File)); backup.Initialize = true; backup.PercentCompleteNotification = 10; backup.PercentComplete += new PercentCompleteEventHandler(backup_PercentComplete); //backup.Checksum = true; backup.SqlBackup(srv); } public void backup_PercentComplete(object sender, Microsoft.SqlServer.Management.Smo.PercentCompleteEventArgs e) { this.Invoke(new displayProgress_delegate(displayProgress), e.Percent); //Application.DoEvents(); } public delegate void displayProgress_delegate(int progress); public void displayProgress(int progress) { this.lbProgress.Text = "已完成[" + progress.ToString() + " %]"; pbDemo.Value = progress; btnBackup.Enabled = (progress == 100); } 症状如下:结果正确执行,但进度条不显示。
刚开始以为是线程问题,后来发现不是这个原因。
又试了另外一段代码
using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common; using System.Diagnostics; static void Main(string[] args) { BackupDatabase("ap4//agronet09", "agronet2008", "c://Northind_3.bak"); Console.WriteLine(Environment.NewLine + "Press any key to continue."); Console.ReadKey(); } public static void BackupDatabase(string serverName, string databaseName, string fileName) { Console.WriteLine("*** Backing up ***"); Server server = new Server(serverName); Backup backup = new Backup(); backup.Action = BackupActionType.Database; backup.Database = databaseName; backup.Incremental = false; backup.Initialize = true; backup.LogTruncation = BackupTruncateLogType.Truncate; BackupDeviceItem backupItemDevice = new BackupDeviceItem(fileName, DeviceType.File); backup.Devices.Add(backupItemDevice); backup.PercentCompleteNotification = 10; backup.PercentComplete += backup_PercentComplete; backup.Complete +=backup_Complete; backup.SqlBackup(server); } protected static void backup_PercentComplete(object sender, PercentCompleteEventArgs e) { Console.WriteLine(e.Percent + "% processed."); //Application.(); System.Threading.Thread.Sleep(1000); } protected static void backup_Complete(object sender, ServerMessageEventArgs e) { Console.WriteLine(Environment.NewLine + e.ToString()); } 结果还是不显示。
后来突然想到会不会是文件太小,试了一个200M的数据文件,果然成功显示:
后来经反复实验,发现SQL server 2000约在数据文件加日志文件大于6M左右时显示进度条。
而Sql server 2008 r2大约在3M时显示进度条。可能跟机器也有关系。
注意:SQL server 2008 r2版规定主数据文件必须大于3M,微软真牛!
参考文章:
http://msdn.microsoft.com/zh-cn/magazine/cc163409.aspx
您还没有登录,请您登录后再发表评论
c#备份sqlserver数据库 c#备份sqlserver数据库 c#备份sqlserver数据库 c#备份sqlserver数据库 c#备份sqlserver数据库
NULL 博文链接:https://soft-development.iteye.com/blog/1047670
SQL SERVER 无法附加数据库的解决方法
问题一描述:SQL Server数据库备份还原后,在数据库名称后会出现“受限制访问”字样 问题二描述:在对SQL Server数据库进行还原时,提示:System.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库...
复制)、SQL开发(数据库设计、SQL Server与CLR集成、在SQL Server中使用 XML、使用ADO.NET、使用SMO编程管理数据库对象、高级T-SQL、Service Broker 异步应用程序平台、空间数据类型跨实例链接、数据库管理自动...
使用XML查询技术,存储过程与触发器,操作架构、索引和视图,SQL Server的安全机制,SQL Server备份与恢复,使用.NET访问SQL Server 2008,SQL Server 2008高级主题:SMO、SQL Server 2008服务体系和SQL Server代理...
sql server sqldmo_x86_x64,C#数据库备份还原很好用的.dll,里面有使用方法,引用Interop.SQLDMO.dll后的注意事项。 SQLDMO.dll是个好东西,ASP.NET利用它可以实现在线备份、还原数据库等各种功能。近日有客户...
目录 第1章 SQL Server 2008入门知识 SQL 2008完全学习手册 视频教程 第2章 使用SQL Server 2008管理工具 SQL 2008完全学习手册 视频教程 ...第20章 使用SMO访问SQL Server 2008 第21章 SQL Server其他操作
默认情况下,不在 SQL Server Express 中安装示例数据库。Northwind 和 pubs 示例数据库可以从 Microsoft 网站进行下载。Adventureworks 示例数据库可从此 Microsoft 网站安装。 [顶部] 3.7“强制加密”配置可能会...
sqlserver中更改数据库所属为dbo的方法,需要的朋友可以参考下。
使用Microsoft SQL Server 2005和这本权威书籍中所包含的广泛信息,可以构建功能强大的企业级数据库程序。本书介绍了如何开发服务器端和客户端数据库应用程序,以及如何分析业务智能数据。还深入介绍了所有的全新...
SQL Server 2005管理对象 SMO 基础知识 列举服务器 连接到服务器 列举数据库 发出 DDL 或 DML 命令 遍历对象列表 备份数据库 恢复数据库 验证数据库备份 结束语
23.5 备份数据库 23.6 生成脚本 23.7 完整的代码 23.8 小结 第24章 数据仓库 24.1 考虑不同的需求 24.2 维度数据库 24.3 数据仓库的概念 24.4 SQL Server的集成服务 24.5 创建分析服务...
SQL+SERVER+2005+管理与... 《SQL Server 2005开发技术大全》可供初学者阅读学习,也可以作为中级读者的提高教程,书中大量且详细的T-SQL语法及在其他开发中所用到的技术可以作为开发人员的参考手册,随时进行查阅。
该工具使用SMO类库,可以同时显示多个SQL Server实例上作业的当前状态,程序运行所在的Windows系统必须安装SQL Server 2012。
《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...
第20章 使用SMO访问SQL Server 2008
在此版本中,您可以使用 T-SQL 和SMO备份到Windows AzureBlob存储。在SQL Server 户内实例上的SQLServer Databases或在宿主环境中,如运行在 Windows Azure VMs上的 SQL Server 实例都可以利用此功能。 好处: · ...
相关推荐
c#备份sqlserver数据库 c#备份sqlserver数据库 c#备份sqlserver数据库 c#备份sqlserver数据库 c#备份sqlserver数据库
NULL 博文链接:https://soft-development.iteye.com/blog/1047670
SQL SERVER 无法附加数据库的解决方法
问题一描述:SQL Server数据库备份还原后,在数据库名称后会出现“受限制访问”字样 问题二描述:在对SQL Server数据库进行还原时,提示:System.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库...
复制)、SQL开发(数据库设计、SQL Server与CLR集成、在SQL Server中使用 XML、使用ADO.NET、使用SMO编程管理数据库对象、高级T-SQL、Service Broker 异步应用程序平台、空间数据类型跨实例链接、数据库管理自动...
使用XML查询技术,存储过程与触发器,操作架构、索引和视图,SQL Server的安全机制,SQL Server备份与恢复,使用.NET访问SQL Server 2008,SQL Server 2008高级主题:SMO、SQL Server 2008服务体系和SQL Server代理...
sql server sqldmo_x86_x64,C#数据库备份还原很好用的.dll,里面有使用方法,引用Interop.SQLDMO.dll后的注意事项。 SQLDMO.dll是个好东西,ASP.NET利用它可以实现在线备份、还原数据库等各种功能。近日有客户...
目录 第1章 SQL Server 2008入门知识 SQL 2008完全学习手册 视频教程 第2章 使用SQL Server 2008管理工具 SQL 2008完全学习手册 视频教程 ...第20章 使用SMO访问SQL Server 2008 第21章 SQL Server其他操作
默认情况下,不在 SQL Server Express 中安装示例数据库。Northwind 和 pubs 示例数据库可以从 Microsoft 网站进行下载。Adventureworks 示例数据库可从此 Microsoft 网站安装。 [顶部] 3.7“强制加密”配置可能会...
sqlserver中更改数据库所属为dbo的方法,需要的朋友可以参考下。
使用Microsoft SQL Server 2005和这本权威书籍中所包含的广泛信息,可以构建功能强大的企业级数据库程序。本书介绍了如何开发服务器端和客户端数据库应用程序,以及如何分析业务智能数据。还深入介绍了所有的全新...
SQL Server 2005管理对象 SMO 基础知识 列举服务器 连接到服务器 列举数据库 发出 DDL 或 DML 命令 遍历对象列表 备份数据库 恢复数据库 验证数据库备份 结束语
23.5 备份数据库 23.6 生成脚本 23.7 完整的代码 23.8 小结 第24章 数据仓库 24.1 考虑不同的需求 24.2 维度数据库 24.3 数据仓库的概念 24.4 SQL Server的集成服务 24.5 创建分析服务...
SQL+SERVER+2005+管理与... 《SQL Server 2005开发技术大全》可供初学者阅读学习,也可以作为中级读者的提高教程,书中大量且详细的T-SQL语法及在其他开发中所用到的技术可以作为开发人员的参考手册,随时进行查阅。
23.5 备份数据库 23.6 生成脚本 23.7 完整的代码 23.8 小结 第24章 数据仓库 24.1 考虑不同的需求 24.2 维度数据库 24.3 数据仓库的概念 24.4 SQL Server的集成服务 24.5 创建分析服务...
该工具使用SMO类库,可以同时显示多个SQL Server实例上作业的当前状态,程序运行所在的Windows系统必须安装SQL Server 2012。
《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...
第20章 使用SMO访问SQL Server 2008
在此版本中,您可以使用 T-SQL 和SMO备份到Windows AzureBlob存储。在SQL Server 户内实例上的SQLServer Databases或在宿主环境中,如运行在 Windows Azure VMs上的 SQL Server 实例都可以利用此功能。 好处: · ...