在导入的 BCP Table 上跟踪 SQL 服务器中的更改
Tracking changes in SQL Server on a BCP Imported Table
我使用 BCP 上传了一个 Excel 文件。 (每天截断 DB 中的当前 table,并从 excel 文件中输入 BCP 以重新填充 table)。记录对行所做的所有更改(可能是行添加或当前行列的更改)对我来说很重要。这个想法是记录所有所做的更改。
我在网上看了一些文章,在那里我们可以创建一个日志table和触发器(不知道怎么做)。一个 table 的日志,其中包含像
这样的列
Date | Field | Old Value | New Value.
首先,如何做到这一点?
其次,什么是不记录截断 table 而只记录实际更改的更聪明的方法。我正在考虑创建一个临时文件 table (tbl_Excefile_Temp),我将在其中导入文件,然后从 tbl_Excefile_Temp 更新当前的 table (tbl_Excefile)这样,在当前 table 中所做的所有更改都会自动记录在日志 table 中。
我知道这是一个很大的用例,请你指导一下。
如果您使用的是 SQL 服务器 2016 或更高版本,我建议您查看时间 tables。如果您停止截断并使用合并语句,您将有一种非常简单的方法来保存日志。每当您进行更改时 SQL 服务器将写入旧值并在旧行有效时添加日期时间。
使用时间 tables,您可以查询 table 在特定日期时间的状态。在常规使用中,与非时间 table.
没有区别
我使用 BCP 上传了一个 Excel 文件。 (每天截断 DB 中的当前 table,并从 excel 文件中输入 BCP 以重新填充 table)。记录对行所做的所有更改(可能是行添加或当前行列的更改)对我来说很重要。这个想法是记录所有所做的更改。
我在网上看了一些文章,在那里我们可以创建一个日志table和触发器(不知道怎么做)。一个 table 的日志,其中包含像
这样的列Date | Field | Old Value | New Value.
首先,如何做到这一点?
其次,什么是不记录截断 table 而只记录实际更改的更聪明的方法。我正在考虑创建一个临时文件 table (tbl_Excefile_Temp),我将在其中导入文件,然后从 tbl_Excefile_Temp 更新当前的 table (tbl_Excefile)这样,在当前 table 中所做的所有更改都会自动记录在日志 table 中。
我知道这是一个很大的用例,请你指导一下。
如果您使用的是 SQL 服务器 2016 或更高版本,我建议您查看时间 tables。如果您停止截断并使用合并语句,您将有一种非常简单的方法来保存日志。每当您进行更改时 SQL 服务器将写入旧值并在旧行有效时添加日期时间。
使用时间 tables,您可以查询 table 在特定日期时间的状态。在常规使用中,与非时间 table.
没有区别