首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据从本地SQL Server数据库复制到Azure SQL Server数据库

将数据从本地SQL Server数据库复制到Azure SQL Server数据库
EN

Stack Overflow用户
提问于 2018-02-16 19:26:35
回答 1查看 343关注 0票数 0

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

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

做这件事最好的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-02-17 00:33:41

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

代码语言:javascript
复制
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上创建表来存储此信息。

代码语言:javascript
复制
// Setup SQL Server for sync

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

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

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

代码语言:javascript
复制
// Setup SQL Database for sync

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

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

要同步数据库,只需运行控制台应用程序,如下所示:

代码语言:javascript
复制
SyncConsole.exe –setup

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

同步数据的代码也很简单。下面是它看起来的样子:

代码语言:javascript
复制
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();
    }
}

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

要同步数据库,只需运行控制台应用程序,如下所示:

代码语言:javascript
复制
SyncConsole.exe –sync

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48825774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档