【问题标题】:Copy data from on-premises SQL Server database to Azure SQL Server database将数据从本地 SQL Server 数据库复制到 Azure SQL Server 数据库
【发布时间】:2023-04-05 03:30:01
【问题描述】:

我有两个 SQL Server 实例,一个是本地 SQL Server,另一个是 Azure SQL Server 实例。 Azure SQL Server 数据库中的一些表有一些列,其中包含来自本地 SQL Server 数据库的数据(尽管表架构不同)。

我们需要确保每当将新条目添加到本地 SQL Server 数据库中时,相应的条目也应该插入到 Azure SQL Server 数据库中。

最好的方法是什么?

【问题讨论】:

  • 你用谷歌搜索过什么吗?有很多方法可以做到这一点,并且有很多关于如何做到这一点的指南。您可以在本地使用 CDC 来识别更改的记录,然后使用 SSIS 或 BCP 将更改的数据导入 Azure,然后运行存储过程将其合并到目标表中
  • @Nick.McDermaid 是的,我做到了。我找到了几个解决方案。但我不确定在性能方面使用哪种解决方案

标签: sql-server sql-server-2012 triggers azure-sql-database


【解决方案1】:

您可以使用 Sync Framework 创建自己的代码来指定要同步的特定表。

using (SqlConnection sqlServerConn =
    new SqlConnection(LocalSQLServerConnectionString))
{
    using (SqlConnection sqlAzureConn =
        new SqlConnection(RemoteSQLAzureConnectionString))
    {
        DbSyncScopeDescription myScope =
            new DbSyncScopeDescription(scopeName);
        DbSyncTableDescription Customer =
            SqlSyncDescriptionBuilder.GetDescriptionForTable("SalesLT.Customer", sqlServerConn);

        DbSyncTableDescription Product =

            SqlSyncDescriptionBuilder.GetDescriptionForTable("SalesLT.Product", sqlServerConn);

        // Add the tables from above to the scope
        myScope.Tables.Add(Customer);
        myScope.Tables.Add(Product);

下一部分代码设置本地本地 SQL Server 以进行预配。如果 SQL Server 已经包含表架构和数据,那么它必须做什么?同步框架使用这两个数据库作为数据存储来存储配置信息和有关当前同步状态的状态信息。因此,配置会在您的本地 SQL Server 上创建表来存储此信息。

// Setup SQL Server for sync

SqlSyncScopeProvisioning sqlServerProv =
    new SqlSyncScopeProvisioning(sqlServerConn, myScope);
if (!sqlServerProv.ScopeExists(scopeName))

    // Apply the scope provisioning.
    sqlServerProv.Apply();

下一段代码对远程 SQL 数据库服务器执行相同的操作。但是,它还会根据本地 SQL Server 范围创建要同步的架构数据表。下面是代码的样子:

// Setup SQL Database for sync

SqlSyncScopeProvisioning sqlAzureProv =
    new SqlSyncScopeProvisioning(sqlAzureConn, myScope);
if (!sqlAzureProv.ScopeExists(scopeName))

    // Apply the scope provisioning.
    sqlAzureProv.Apply();

要同步数据库,只需像这样运行控制台应用程序:

SyncConsole.exe –setup

数据库设置只需要进行一次,但是您可能希望多次同步数据库,因此代码分为两个不同的部分,一个用于设置,另一个用于同步。

同步数据的代码同样简单。这是它的样子:

using (SqlConnection sqlServerConn = new SqlConnection(LocalSQLServerConnectionString))

{
    using (SqlConnection sqlAzureConn = new SqlConnection(RemoteSQLAzureConnectionString))
    {
        SyncOrchestrator syncOrchestrator = new SyncOrchestrator
        {
            LocalProvider = new SqlSyncProvider(scopeName, sqlAzureConn),
            RemoteProvider = new SqlSyncProvider(scopeName, sqlServerConn),
            Direction = SyncDirectionOrder.UploadAndDownload
        };
         syncOrchestrator.Synchronize();
    }
}

在同步代码中,我们创建两个连接并实例化一个同步协调器,告诉它我们要上传和下载数据。这被认为是双向同步,写入 SQL 数据库或 SQL Server 以移动到另一个。

要同步数据库,只需像这样运行控制台应用程序:

SyncConsole.exe –sync

同步完成后,我们可以查询 SQL 数据库,查看里面的数据。

要查看如何操作的完整示例,请访问this 文章。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2014-05-09
    • 1970-01-01
    相关资源
    最近更新 更多