通过C#同步数据库SQL Server

时间:2009-07-20 03:36:09

标签: c# .net sql-server synchronization

如何将一台服务器上的数据库同步到另一台服务器上?我需要通过C#而不是脚本来实现。我打算使用ADO.NET从一个数据库中检索模式和数据集,但是如何在代码中同步它呢?

由于

2 个答案:

答案 0 :(得分:2)

您可以使用各种选项:

  1. SSIS在System1和System之间导出/导入数据系统2
  2. 镜像以在System1和&amp ;;之间复制数据系统2
  3. 使System2与System1保持同步的复制
  4. 服务器之间的数据库备份/恢复脚本使用C#作为在System1上编写备份脚本的IO粘合剂,将文件复制到System2并在System2上调用恢复脚本
  5. 如果需要复制到System2的System1发生更改(表,索引,视图,过程,函数,触发器......等等),最简单的选项是#4

    有关镜像信息,请参阅Database Mirroring in SQL Server 2005 @ SQL Server PerformanceDatabase Mirroring in SQL Server 2005 @ Microsoft

    如果您需要更多关于#4的启发,请回复。哦,这将有助于指定您正在使用的SQL服务器版本。该信息假设> = 2005(Yukon,Katmai和可能的Killimanjaro)

    更新:我不想尝试在此实现自己的运行时,因为有太多的变化,只需在2台服务器之间进行复制就需要能够对对象进行差异化。即使使用SMO .NET对象,这也是一项繁琐的任务,需要很长的开发时间表。

    更新1:海报对SSIS版本感兴趣,因此我们将使用这些说明。

    1. 启动SQL Server Management Studio
    2. 导航到所选数据库
    3. 右键单击和任务 - >导出数据
    4. 点击下一步
    5. 选择所需的来源
    6. 点击下一步
    7. 选择目的地设置
    8. 点击下一步
    9. 选择使用表格或编写查询(我们将假设使用表格)
    10. 点击下一步
    11. 选择所需的表格
    12. 单击“编辑映射”
    13. 确保在需要时选择启用身份插入
    14. 确保根据需要选择删除/追加行
    15. 确保删除并重新创建根据需要选择的目标表
    16. 点击确定
    17. 点击下一步
    18. 现在将其保存到SSIS包中,或者保存到SQL Server或文件系统
    19. 您现在可以使用DTSExec通过调度程序执行此程序包,或使用.NET包装程序并从您自己的C#运行时调用
    20. Microsoft网站的C#代码示例

      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();
          }
        }
      }
      

      资源

答案 1 :(得分:0)

为什么在有db工具为你做这个的时候你会构建它? 查看SSIS,或者之前已知的DTS。