SqlBulkSyncFunction 2024.1.4.2

dotnet add package SqlBulkSyncFunction --version 2024.1.4.2                
NuGet\Install-Package SqlBulkSyncFunction -Version 2024.1.4.2                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="SqlBulkSyncFunction" Version="2024.1.4.2" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用该包。
paket add SqlBulkSyncFunction --version 2024.1.4.2                
#r "nuget: SqlBulkSyncFunction, 2024.1.4.2"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将其复制到交互工具或脚本的源代码中以引用包。
// Install SqlBulkSyncFunction as a Cake Addin
#addin nuget:?package=SqlBulkSyncFunction&version=2024.1.4.2

// Install SqlBulkSyncFunction as a Cake Tool
#tool nuget:?package=SqlBulkSyncFunction&version=2024.1.4.2                

SqlBulkSyncFunction Build Azure Function

WCOMAB/SqlBulkSync 工具的 Azure Function 版本,这是一个轻量级、性能优良的非侵入式 SQL Server 数据同步服务。

它不使用任何触发器或事件,而是使用从 SQL Server 2008 开始可用的更改跟踪功能。该服务主要用于将本地 SQL Server 数据以有效方式同步到 Azure,仅传输更改。但它也可以在本地/云实例之间正常运行。

先决条件

配置

该函数通过 Azure App 设置/环境变量进行配置,您可以配置多个同步源/目标,并在每个同步作业中配置多个表。

描述 示例
ProcessGlobalChangeTrackingSchedule 自定义 cron 表达式计划 0 */5 * * * *
SyncJobsConfig:Jobs:[key]:Source:ConnectionString 源数据库连接字符串 服务器=my.dbserver.net;初始目录=MySourceDb;集成安全=True
同步作业配置:作业:[key]:源:托管标识 指示是否使用托管标识的标志 false
同步作业配置:作业:[key]:源:租户ID 用于托管标识的Azure租户ID 46b41530-1e0d-4403-b815-24815944aa6a
同步作业配置:作业:[key]:目标:连接字符串 目标数据库连接字符串 服务器=my.dbserver.net;初始目录=MyTargetDb;集成安全=True
同步作业配置:作业:[key]:目标:托管标识 指示是否使用托管标识的标志 true
同步作业配置:作业:[key]:目标:租户ID 用于托管标识的Azure租户ID 46b41530-1e0d-4403-b815-24815944aa6a
同步作业配置:作业:[key]:批次大小 批量同步批次大小 1000
同步作业配置:作业:[key]:区域 区域名称,用于手动触发同步 开发
同步作业配置:作业:[key]:手动 标志是指定的同步作业从未调度中排除 true
同步作业配置:作业:[key]:调度:[key] 可选的选入/选出战时调度 true
同步作业配置:作业:[key]:表格:[key] 要同步的表的完全限定名称 dbo.MyTable

注意

[key]替换为同步作业/表配置的唯一名称,例如将MySync替换为MyTable将生成SyncJobsConfig:Jobs:MySync:Tables:MyTable=dbo.MyTable

在非Windows操作系统中,您需要将:替换为__,例如SyncJobsConfig__Jobs__MySync__Tables__MyTable

KeyVault中的配置将:替换为--,例如SyncJobsConfig--Jobs--MySync--Tables--MyTable

调度

描述 Cron表达式
自定义 根据配置的自定义调度进行触发 ProcessGlobalChangeTrackingSchedule
午夜 每天触发00:00 / 12AM 0 0 0 * * *
中午 每天触发12:00 / 12PM 0 0 12 * * *
每五分钟 每五分钟触发一次 5 */5 * * * *
每小时 每小时触发一次 10 0 * * * *

注意

自定义调度是默认的,如果同步作业配置中未指定调度。

开发资源

为了更快地开始在本地上测试功能,以下提供了示例配置和数据库模式

示例local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "ProcessGlobalChangeTrackingSchedule": "0 23 11 * * *",
    "SyncJobsConfig:Jobs:SyncTest:Area": "SyncTest",
    "SyncJobsConfig:Jobs:SyncTest:Source:ConnectionString": "Server=localhost;Initial Catalog=SyncTest;Integrated Security=True",
    "SyncJobsConfig:Jobs:SyncTest:Source:ManagedIdentity": false,
    "SyncJobsConfig:Jobs:SyncTest:Target:ConnectionString": "Server=localhost;Initial Catalog=SyncTest;Integrated Security=True",
    "SyncJobsConfig:Jobs:SyncTest:Target:ManagedIdentity": false,
    "SyncJobsConfig:Jobs:SyncTest:BatchSize": 1000,
    "SyncJobsConfig:Jobs:SyncTest:Manual": false,
    "SyncJobsConfig:Jobs:SyncTest:Tables:Test": "source.[Test]",
    "SyncJobsConfig:Jobs:SyncTest:TargetTables:Test": "target.[Test]",
    "SyncJobsConfig:Jobs:SyncTest:Schedules:Custom": true,
    "SyncJobsConfig:Jobs:SyncTest:Schedules:Noon": true,
    "SyncJobsConfig:Jobs:SyncTest:Schedules:Midnight": true,
    "SyncJobsConfig:Jobs:SyncTest:Schedules:EveryFiveMinutes": true,
    "SyncJobsConfig:Jobs:SyncTest:Schedules:EveryHour": true
  }
}

示例数据库初始化脚本

-- Create Database
CREATE DATABASE [SyncTest]
GO
USE [SyncTest]
GO
ALTER DATABASE [SyncTest]
SET CHANGE_TRACKING = ON (
    CHANGE_RETENTION = 7 DAYS,
    AUTO_CLEANUP = ON
  )
GO

-- Create schemas
CREATE SCHEMA [source]
GO
CREATE SCHEMA [target]
GO

-- Create tables
CREATE TABLE [source].[Test](
  [Id] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY,
  [Description] [nvarchar](256) NULL,
  [Created] [datetime] NOT NULL
)
GO
ALTER TABLE [source].[Test] ENABLE CHANGE_TRACKING WITH(TRACK_COLUMNS_UPDATED = ON)
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [target].[Test](
  [Id] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY,
  [Description] [nvarchar](256) NULL,
  [Created] [datetime] NOT NULL
)
GO

-- Seed data
INSERT INTO source.[Test]
  (
    Description,
    Created
  ) VALUES (
    'Row 1',
    GETDATE()
  )
GO
INSERT INTO source.[Test]
  (
    Description,
    Created
  ) VALUES (
    'Row 2',
    GETDATE()
  )
产品 兼容的以及额外的计算目标框架版本。
.NET net7.0兼容。 net7.0-android被计算。 net7.0-ios被计算。 net7.0-maccatalyst被计算。 net7.0-macos被计算。 net7.0-tvos被计算。 net7.0-windows被计算。 net8.0被计算。 net8.0-android被计算。 net8.0-browser被计算。 net8.0-ios被计算。 net8.0-maccatalyst被计算。 net8.0-macos被计算。 net8.0-tvos被计算。 net8.0-windows被计算。
兼容的目标框架
包中包括的目标框架
了解更多关于目标框架.NET Standard的信息。

NuGet 包

此包未被任何 NuGet 包使用。

GitHub 仓库

此包未被任何流行的 GitHub 仓库使用。

版本 下载 最后更新
2024.1.4.2 183 1/4/2024
2023.9.1.2 224 9/1/2023
2023.8.29.2 188 8/29/2023
2023.1.7.2 272 1/7/2023
2023.1.5.2 295 1/5/2023
2022.12.30.4 241 12/30/2022
2022.12.30.2 235 12/30/2022
2022.12.14.6 285 12/14/2022
2022.12.14.4 274 12/14/2022
2022.12.14.2 276 12/14/2022
2022.12.6.5 248 12/6/2022