备份选定数据库的存储过程并导出到文本文件

本文关键字:文本 文件 存储过程 数据库 备份 | 更新日期: 2023-09-27 18:21:56

我开发了一个应用程序,用户可以在其中选择要备份的特定表,并将其导出到所选数据库和所选服务器的文本文件中。

我的表单包含网络中可用服务器的列表,在用户选择服务器时,将显示相应的数据库,当用户选择数据库时,将会显示相应的表,用户可以选择他想要备份的表,当输入执行按钮时,它会执行所有备份并导出到文本文件。

现在,当用户选择数据库时,我想稍微修改一下我的程序,如果数据库包含存储过程,它应该显示所选数据库中所有存储过程的列表,并对它们进行备份并导出到文本文件。

请给我一些实现这一目标的想法。

备份选定数据库的存储过程并导出到文本文件

您可以使用SMO名称空间,其中包含执行此操作所需的所有内容以及更多

首先添加对该命名空间的引用

using System;
using System.Collections.Generic;
using System.Data;
using Microsoft.SqlServer.Management.Smo;

      Server server = new Server(@[yourServer]);
      Database db = server.Databases[yourdatabase];
      List<SqlSmoObject> list = new List<SqlSmoObject>();
      DataTable dataTable = db.EnumObjects(DatabaseObjectTypes.StoredProcedure);
      foreach (DataRow row in dataTable.Rows)
      {
         string sSchema = (string)row["Schema"];
         if (sSchema == "sys" || sSchema == "INFORMATION_SCHEMA")
            continue;
         StoredProcedure sp = (StoredProcedure)server.GetSmoObject(
            new Urn((string)row["Urn"]));
         if (!sp.IsSystemObject)
            list.Add(sp);
      }
      Scripter scripter = new Scripter();
      scripter.Server = server;
      scripter.Options.IncludeHeaders = true;
      scripter.Options.SchemaQualify = true;
      scripter.Options.ToFileOnly = true;
      scripter.Options.FileName = @"C:'fileName.sql";
      scripter.Script(list.ToArray());

上的更多信息

http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated