首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CDC捕获数据

使用CDC捕获数据
EN

Stack Overflow用户
提问于 2014-10-29 14:41:06
回答 3查看 192关注 0票数 0

为了捕获删除的用户名,我在CDC表中添加了一个新列(例如:- SQL )来设置记录的cdc.dbo_testCDC_CT用户名。即ALTER TABLE cdc.dbo_testCDC_CT ADD username VARCHAR(20) DEFAULT(SUSER_SNAME())。该列中的值始终是"sa",但我是以windows身份验证登录的。为什么会发生这种情况?

EN

回答 3

Stack Overflow用户

发布于 2014-11-25 21:35:27

首先,您不应该修改cdc生成的系统表。这个表是在您的dbo.testCDC表上启用cdc时生成的,它将包括源表的列,外加5个附加列,其含义如下:http://msdn.microsoft.com/en-us/library/bb500305(v=sql.110).aspx。当您从表中禁用cdc时,它将被自动删除。

我建议先阅读cdc和预期的使用模式。这篇文章可能是一个很好的开始:http://technet.microsoft.com/en-us/magazine/2008.11.sql.aspx

为了回答您的问题,为什么总是将sa分配给您的列:*_CT表中的所有行都由日志读取器进程填充,在本例中,该进程恰好在sa帐户下运行。这不是将审计添加到系统中的方法。前面提到的文章也可以为您提供一些关于实现审计的更好方法的指导。

票数 1
EN

Stack Overflow用户

发布于 2015-09-09 03:54:17

您的解决方案应该捕获'Changed By‘或'Inserted By’记录的用户名,并将其持久化到捕获实例本身的底层数据表主题。通过这种方式,您的CDC实例还将为您捕获记录的用户名。

如前所述,您永远不应该更改系统生成的表,原因很简单: 1.由于任何原因恢复它们时,您所做的更改都将丢失。2.更改系统表可能会给您带来意想不到的后果。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2020-05-06 05:10:27

您将获得删除、插入和更新的用户,而不是更改CDC表更改基表(缺省值集默认值的主源表(SUSER_SNAME()列

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

https://stackoverflow.com/questions/26624135

复制
相关文章

相似问题

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