Синхронизация баз данных SQL Server через C # - PullRequest
0 голосов
/ 20 июля 2009

Как мне синхронизировать базу данных на одном сервере с другим? Мне нужно сделать это через C #, а не скрипты. Я планировал использовать ADO.NET для извлечения схемы и набора данных из одной базы данных, но как мне синхронизировать его в коде?

Спасибо

Ответы [ 2 ]

2 голосов
/ 20 июля 2009

Доступны различные варианты:

  1. SSIS для экспорта / импорта данных между System1 и System2
  2. Зеркальное отображение для копирования данных между System1 и System2
  3. Репликация для синхронизации System2 с System1
  4. Скрипты для резервного копирования / восстановления базы данных между серверами, использующими C #, чтобы быть связующим звеном ввода-вывода, который создает сценарий резервного копирования в System1, копирует файл в System2 и вызывает сценарий восстановления в System2

Самый простой вариант для реализации - это # ​​4, особенно если происходят изменения в System1, которые необходимо реплицировать в System2 (таблицы, индексы, представления, процедуры, функции, триггеры и т. Д. И т. Д.)

См. Зеркальное отображение базы данных в SQL Server 2005 @ Производительность SQL Server или Зеркальное отображение базы данных в SQL Server 2005 @ Microsoft для зеркального отображения информации.

Если вам нужно больше просветления на # 4, просто ответьте. О, это поможет определить, какую версию SQL-сервера вы используете. Эта информация предполагает> = 2005 (Юкон, Катмай и, возможно, Киллиманджаро)

Обновление: я не буду пытаться реализовать свою собственную среду выполнения на этом, поскольку существует так много вариантов, что просто копирование между двумя серверами требует способности проводить сравнения с объектами. Даже с использованием объектов SMO .NET это будет трудной задачей, которая потребует длительного графика разработки.

Обновление 1: постер интересуется версией SSIS, поэтому мы будем использовать эти инструкции.

  1. Запустить SQL Server Management Studio
  2. Перейти к выбранной базе данных
  3. Щелкните правой кнопкой мыши и Задачи-> Экспорт данных
  4. Нажмите Далее
  5. Выберите необходимый источник
  6. Нажмите Далее
  7. Выберите настройки назначения
  8. Нажмите Далее
  9. Выберите либо использовать таблицы, либо написать запрос (мы будем предполагать использование таблиц)
  10. Нажмите Далее
  11. Выберите необходимые таблицы
  12. Нажмите Изменить сопоставления
  13. Убедитесь, что выбрана опция включения идентификационной вставки
  14. Убедитесь, что для удаления / добавления строк выбрано необходимое количество
  15. Обеспечить удаление и повторное создание таблицы назначения, выбранной как требуется
  16. Нажмите Ok
  17. Нажмите Далее
  18. Теперь сохраните это в пакет служб SSIS либо в SQL Server, либо в файловой системе.
  19. Теперь вы можете использовать DTSExec для выполнения этого пакета через планировщик или использовать оболочку .NET и вызывать из собственной среды выполнения C #

Пример кода C # с сайта Microsoft

using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace RunFromClientAppCS
{
  class Program
  {
    static void Main(string[] args)
    {
      string pkgLocation;
      Package pkg;
      Application app;
      DTSExecResult pkgResults;

      pkgLocation =
        @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +
        @"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";
      app = new Application();
      pkg = app.LoadPackage(pkgLocation, null);
      pkgResults = pkg.Execute();

      Console.WriteLine(pkgResults.ToString());
      Console.ReadKey();
    }
  }
}

Ресурсы

0 голосов
/ 20 июля 2009

Зачем вам строить это, когда есть инструменты для БД, которые делают это для вас? Посмотрите на SSIS , или, как было ранее известно, DTS.

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