sql-server - MS SQL Server - 复制数据库的初始数据匿名化
问题描述
我有 2 个 SQL Server 数据库 - 发布者和订阅者。由于订阅者被用于统计,我必须为一些记录提供匿名化。
我的想法是:
使用快照复制将数据加载到副本中(该操作创建模式和一些用于插入/更新/删除的存储过程)。
修改已创建的负责插入/更新的存储过程(如 sp_MSins_projecttsttable_name)并在那里放置匿名化逻辑。
使用事务复制进行进一步同步。
使用这种方法,每次将新记录插入表中时,SQL Server 都会将其匿名版本插入订阅者数据库 - 复制使用自定义过程。
但是,这里的初始加载(快照复制)是一个问题,因为存储过程是在该过程中以原始形式创建的。我知道我可以执行快照复制,然后运行一些带有匿名逻辑的脚本,但是我宁愿避免这种情况。
我的问题:
- 是否可以将附加逻辑应用于即时修改记录的快照复制?
或者也许你知道另一种解决方案,我应该尝试不同的方法?我不确定是否需要代码:
示例文章:
EXEC sp_addarticle @publication = N'ProjectPublication',
@article = N'table_name',
@source_owner = N'projecttst',
@source_object = N'table_name',
@type = N'logbased',
@description = NULL,
@creation_script = NULL,
@pre_creation_cmd = N'drop',
@schema_option = 0x000000000803509F,
@identityrangemanagementoption = N'manual',
@destination_table = N'table_name',
@destination_owner = N'projecttst',
@vertical_partition = N'false',
@ins_cmd = N'CALL sp_MSins_projecttsttable_name',
@del_cmd = N'CALL sp_MSdel_projecttsttable_name',
@upd_cmd = N'SCALL sp_MSupd_projecttsttable_name';
原始程序和修改程序:
ALTER PROCEDURE [dbo].[sp_MSins_projecttsttable_name]
@c1 numeric(19,0),
@c2 nvarchar(255)
AS
BEGIN
INSERT INTO [projecttst].[table_name] ([col1], [col2])
VALUES (@c1, @c2)
END
ALTER PROCEDURE [dbo].[sp_MSins_projecttsttable_name]
@c1 numeric(19,0),
@c2 nvarchar(255)
AS
BEGIN
INSERT INTO [projecttst].[table_name] ([col1], [col2])
VALUES (@c1, 'ANONYMIZED')
END
提前致谢。
解决方案
推荐阅读
- r - R ggplot 文本变量在标题中使用两个日期变量
- r - ggplot,根据采样时间的数据空间?
- python - 使用 tkinter 时,如何保存变量以供将来使用?
- amazon-web-services - 如何使用 aws-cdk python 设置 API 密钥
- laravel - 扩展和自定义 Laravel 重置密码逻辑
- python-3.x - 从 pdpbox 导入 pdp、get_dataset、info_plots 时出现 Python 错误
- sas - Proc sql如何使用生日提取大于18yrs的成员记录
- python - 从文件路径中提取“时间”
- javascript - 在字符串中格式化日期
- python - 如何将具有相等相邻条目的数组中的所有条目“归零”?