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
NuGet 团队不提供对此客户端的支持。请联系其 维护者 获取支持。
#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
NuGet 团队不提供对此客户端的支持。请联系其 维护者 获取支持。
SqlBulkSyncFunction
WCOMAB/SqlBulkSync 工具的 Azure Function 版本,这是一个轻量级、性能优良的非侵入式 SQL Server 数据同步服务。
它不使用任何触发器或事件,而是使用从 SQL Server 2008 开始可用的更改跟踪功能。该服务主要用于将本地 SQL Server 数据以有效方式同步到 Azure,仅传输更改。但它也可以在本地/云实例之间正常运行。
先决条件
- .NET 7 SDK - https://dotnet.microsoft.com/en-us/download
- Azure Functions Core Tools 版本 4.0.4785 或更高版本。 - https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local#v2
- Azure CLI 版本 2.20 或更高版本。 - https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
- IDE
- Visual Studio - 17.4.2 或更高版本
- VS Code - 1.73.1 或更高版本
配置
该函数通过 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被计算。 |
-
net7.0
- AsyncEnumerator (>= 4.0.2)
- Azure.Identity (>= 1.10.0)
- Dapper (>= 2.0.151)
- Microsoft.Azure.Functions.Worker (>= 1.19.0)
- Microsoft.Azure.Functions.Worker.Extensions.Http (>= 3.1.0)
- Microsoft.Azure.Functions.Worker.Extensions.Storage (>= 6.1.0)
- Microsoft.Azure.Functions.Worker.Extensions.Timer (>= 4.2.0)
- Microsoft.Azure.Functions.Worker.Sdk (>= 1.14.1)
- Microsoft.Data.SqlClient (>= 5.1.1)
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 |