SQL Server 2000DBAWindows XP.NET 2.0SQL Server 2005IntermediateDevVisual StudioSQL ServerWindows.NETVisual Basic
SQL Server 备份实用程序






4.88/5 (43投票s)
2006年4月14日
4分钟阅读

292188

13718
恢复/备份 SQL Server 中的选定对象。
引言
每当我们想要备份或迁移 SQL Server 数据库时,大多数人都会选择使用 SQL Server 2000 中的 Enterprise Manager 或 SQL Server 2005 中的 Management Studio 提供的标准备份实用程序。使用 Enterprise Manager 或 Management Studio 的局限性在于,我们只能进行完整备份或差异备份。当我们需要备份大型数据库的一小部分时,这是一项非常繁琐的任务。例如,在我的数据库中,我只想备份 100 个表中的 15 个表。我只想从这些选定的表中备份几条记录。出于这个原因,我一直在寻找一个小型实用程序来满足我的需求。在搜索了数百个实用程序后,我决定自己编写一个。
特点
- 备份选定对象
- 备份选定数据
- 可以单独备份脚本
- 可以单独备份数据
使用程序
备份数据库
- 从“工具”菜单打开数据库备份窗口。
- 输入 SQL Server 的服务器名称、数据库名称、用户名和密码。
- 单击连接。这将显示数据库中所有可用的表、视图、存储过程、用户定义函数、用户定义数据类型和用户。
- 选择要从每个表中导出的行数,例如“Top 1000 *”。默认值为“Top 100 percent”,表示所有行。
- 如果要单独备份数据,请勾选备份数据,然后取消勾选备份对象结构(脚本)。
- 如果要单独备份脚本,请勾选备份对象结构(脚本),然后取消勾选备份数据。
- 从列表中选择要备份的对象。默认情况下,所有对象都已选中。
- 对表数据应用任何条件。例如,上图中的“StudentID > 120 and StudentID < 200”。这意味着将只导出满足此条件的记录。
- 如果需要,修改要导出的特定“表”的行数。例如,在上图中的“OtherIncome”表中,“Top 99 *”表示仅导出前 99 行。
- 单击开始备份。它会要求您输入文件名和位置。请注意,备份文件扩展名为 *.SQLBackup。
恢复备份
- 从“工具”菜单打开数据库恢复窗口。
- 输入 SQL Server 的服务器名称、数据库名称、用户名和密码。
- 选择要恢复的数据库备份文件。请注意,该程序的数据库备份文件扩展名为 *.SQLBackup。
- 选择备份文件后,它将显示备份中所有可用的对象。
- 如果要创建新数据库,请勾选创建新数据库选项。
- 如果要删除现有数据库并重新创建它,请同时勾选创建新数据库和删除现有数据库选项。
- 从列表中选择要恢复的对象。默认情况下,所有对象都已选中。
- 单击开始恢复。
使用其他功能
- 如您在备份和恢复表单上看到的,有加载设置和另存为设置按钮。一旦我们为备份设置了不同的参数,例如选择对象、指定条件等,就可以将所有这些保存在一个设置文件中。我们可以随时加载这些设置,这样就不需要每次恢复或备份数据库时都输入这些条件。
使用代码
我没有详细描述代码。大部分代码都是自解释且有注释的。只有几点快速说明。我使用了 SQL-DMO 库处理所有与数据库相关的任务。要使用 SQL-DMO 库,您的计算机上必须安装 SQL Express 或 SQL Server 2000 客户端工具。
来自 SQL-DMO 库的对象
'Server object from SQL-DMO library
Dim oServer As New SQLServer2
'Database object from SQL-DMO library
Dim db As SQLDMO.Database2
'BCP Utility from SQL-DMO Library
Dim objBCP As New SQLDMO.BulkCopy2
用于将数据从 SQL Server 导出到文件的函数
objBCP.DataFilePath = "c:\temp\EmployeeData.dat"
db.Tables.Item("Employee").ExportData(objBCP)
为 SQL Server 对象生成 SQL 脚本
'Generate script with drop statement
Dim SQL as String = _
db.GetObjectByName("Employee").Script(SQLDMO_SCRIPT_TYPE.SQLDMOScript_Drops) _
+ db.GetObjectByName("Employee").Script()
限制
- 此实用程序无法备份用户角色和触发器。
- 备份文件(*.SQLBackup)格式为 Zip 格式。不能使用 Enterprise Manager 进行恢复。(如果您将此文件重命名为 *.zip,您可以使用 WinZip 或其他 Zip 实用程序进行解压并查看其内容。)
增强功能
- 可以在备份或恢复过程中添加多线程。这将避免表单冻结,尤其是在备份或恢复大型数据库时。
- 此程序可以进一步增强,包含一个 Windows 服务,可以在没有用户交互的情况下定期备份 SQL Server。因此,此实用程序可用于您的日常备份。
致谢
我使用了 SharpZipLib(ICSharpCode.SharpZipLib.dll),这是一个来自 www.icsharpcode.net 的免费开源 Zip 实用程序库,用于压缩备份目录。此文件包含在 Bin\Release 文件夹中。
要求
- Visual Studio .NET 2005(用于源代码)
- .NET Framework 2.0
- MS SQL Server 2000,或 MS SQL Express 2005,或 MS SQL Server 2005 客户端组件(用于 SQL-DMO 库)