65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 VB.NET 和 SQL-DMO 的 SQL Server 数据库备份实用程序(新版本)

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.77/5 (25投票s)

2007 年 11 月 22 日

CPOL

5分钟阅读

viewsIcon

315153

downloadIcon

21317

一个用于备份和恢复 SQL Server 表、视图、用户定义函数和存储过程的 Windows 应用程序

新版本(1.1.0)

距离我写这篇文章已经一年了。我收到了很多关于这个备份实用程序的回复。因此,我决定更新这个程序,并对其进行了重大改进,使其在功能和性能方面更加稳定。您可以阅读我的原始文章,《SQL Server 备份实用程序(旧版本)》。

新版本更改列表如下:

  • 备份文件的扩展名现在是 .ZIP 而不是 .SQLBackup。这是为了避免任何混淆。
  • 旧版本在某些情况下恢复数据时存在问题。此版本应已修复。
  • 已添加多线程用于备份和恢复过程。这样,程序在长时间运行时就不会冻结。
  • UI 已改进,可显示备份和恢复的正确状态。
  • 包含 GNU 许可证。

我将在接下来的几天内对这个程序进行更多更新。请定期访问我的网站 shabdar.org 以获取最新源代码。

引言

每当我们想要备份或移动 SQL Server 数据库时,我们大多数人都会倾向于使用 SQL Server 2000 中的 Enterprise Manager 或 SQL Server 2005 中的 Management Studio 提供的常规备份实用程序。使用 Enterprise Manager 或 Management Studio 的局限性在于,我们只能使用完整备份或差异备份。当我们只想备份一个大数据库的一小部分时,这是一项非常繁琐的任务。例如,在我的数据库中,我想只备份 100 个表中的 15 个表,或者我可能只想备份这些选定表中的几条记录。因此,我一直在寻找一个允许我这样做的实用程序。在搜索了数百个实用程序后,我决定编写自己的实用程序。

特点

  • 备份选定的对象
  • 备份选定的数据
  • 仅备份脚本
  • 仅备份数据
  • 备份脚本和数据
  • 支持通过 Web、LAN 甚至本地 PC 从远程服务器进行备份

使用程序

要备份数据库,请执行以下操作:

  • 从工具菜单打开数据库备份窗口。
  • 输入 SQL Server 的服务器名称、数据库名称、用户名和密码。
  • 单击连接。这将显示数据库中所有可用的表、视图、存储过程、用户定义函数、用户定义数据类型和用户。
  • 如果要仅备份数据,请勾选备份数据,并取消勾选备份对象结构(脚本)
  • 如果要仅备份脚本,请勾选备份对象结构(脚本),并取消勾选备份数据
  • 从列表中选择要备份的对象。默认情况下,所有对象都已选中。在上图中,Adv_StackedBar2 Adv_UserRoleTypes 表将从备份中排除。
  • 对表数据应用任何条件。例如,在上图中,UserID > 10 and UserID < 25 。这意味着只有满足此条件的记录才会被导出。
  • 修改特定“表”上要导出的行数。例如,在上图中,Top 20 *,表示 Adv_TodaysOutlook 表只导出前 20 行。
  • 单击开始备份。它会提示您输入文件名和位置。请注意,备份文件扩展名为 *.zip。请记住,这不是标准的 SQL Server 备份文件。它只是一个 zip 文件,其中包含表、视图、存储过程等的脚本。它还包含行(*.dat)格式的数据文件。

要恢复备份,请执行以下操作:

  • 从工具菜单打开数据库恢复窗口。

  • 输入 SQL Server 的服务器名称、数据库名称、用户名和密码。
  • 选择要恢复的数据库备份文件(*.zip)。请注意,此实用程序只能恢复由本实用程序本身创建的备份文件(*.zip)。它无法恢复常规 SQL Server 备份文件。
  • 选择备份文件后,它将显示备份中的所有可用对象。
  • 如果要创建新数据库,请勾选创建新数据库选项。
  • 如果要删除现有数据库并重新创建它,请勾选删除现有数据库选项。
  • 从列表中选择要恢复的对象。默认情况下,所有对象都已选中。
  • 单击开始恢复

使用其他功能

正如您所见,备份和恢复窗体都包含预设组合框。它的作用是记录每次备份或恢复数据库时的服务器名称、数据库名称、用户名和密码信息。下次您想使用同一服务器时,无需再次输入所有这些参数。您可以从预设组合列表进行选择。它还会记住上次访问的 SQL Server 名称。

使用代码

我没有详细描述代码。大部分代码都是自解释且有注释的。这里只做一些简要说明。我使用 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()

限制

  • 此实用程序无法备份用户角色和触发器。
  • 备份文件为 zip 格式。(您可以使用 winzip 或其他 zip 实用程序解压并查看其内容)。它不能使用 SQL Server Enterprise Manager 进行恢复。

增强功能

该程序可以进一步增强,包括一个 Windows 服务,该服务可以对 SQL Server 进行定期备份而无需用户交互。因此,该实用程序可用于您的日常备份。

致谢

我使用了 SharpZipLib(ICSharpCode.SharpZipLib.dll),这是一个免费的开源 zip 实用程序库,可在此处获得。该文件包含在 Bin\Release 文件夹中。

要求

  • Visual Studio .NET 2005(用于源代码)
  • .NET Framework 2.0
  • Microsoft SQL Server 2000 或 Microsoft SQL Express 2005 或 Microsoft SQL Server 2005 客户端组件(用于 SQL-DMO 库)

如何安装实用程序

确保您的计算机上已安装 SQL Server 2000 或 2005 客户端组件。如果您不想安装这些组件,可以安装Microsoft SQL Server 2005 向后兼容性组件。这些组件是 SQL-DMO 库所必需的。

从本文顶部提供的链接下载安装程序 zip 文件。解压并运行 setup.exe。它应该会在您的程序菜单和桌面上创建图标。

如何使用源代码

从本文顶部提供的链接下载源代码 zip 文件,并使用 Visual Studio 2005 运行 DatabaseBackup.sln 解决方案文件。

© . All rights reserved.