Резервное копирование хранимых процедур для выбранной базы данных и экспорт в текстовый файл - PullRequest
0 голосов
/ 30 января 2012

Я разработал приложение, в котором пользователи могут выбирать конкретные таблицы для резервного копирования и экспорта в текстовый файл для выбранной базы данных и выбранного сервера.

Моя форма содержит список серверов, доступных в сети, и при выборе пользователем сервера будут отображаться соответствующие базы данных. Когда пользователь выбирает базу данных, отображаются соответствующие таблицы, и пользователь может выбрать таблицы, которые он хочет сделать, и когда кнопка ввода выполняет, он делает все резервное копирование и экспорт в текстовый файл.

Теперь я хочу немного изменить свою программу, когда пользователь выбирает базу данных, если база данных содержит хранимые процедуры, она должна отображать список всех хранимых процедур в выбранной базе данных и должна делать их резервную копию и экспортировать в текстовый файл.

Пожалуйста, дайте мне какие-нибудь идеи для достижения этой цели.

1 Ответ

2 голосов
/ 30 января 2012

вы можете использовать пространство имен 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...