有没有办法跟踪MS Sql Server中视图的更改?
发布时间:2022-05-02 00:56:47 269
相关标签: # sql# 数据# 信息
我正在寻找如何从MS Sql Server 2012中的视图跟踪更改。而且,登录用户的角色是公开的。所以,这很难做到。
例如,假设存在模式。
CREATE TABLE [dbo].[USER_CREDENTIAL](
[USERID] [nvarchar](48) NOT NULL,
[VALID_FROM] DATETIME NULL,
[EXPIRED_AT] DATETIME NULL,
[CREDENTIAL_ID] int NOT NULL,
CONSTRAINT [UNIQUE_USERID] PRIMARY KEY CLUSTERED( [USERID] ASC)
) ;
CREATE VIEW [VIEW_OF_USER_CREDENTIAL] as
SELECT * FROM dbo.[USER_CREDENTIAL];
只能允许它访问视图。当一些数据被插入/更新/删除到用户_凭证时,视图将被更改。我将对视图进行查询。
我看到了文件。我试过了,但要跟踪的目标是数据表,而登录用户缺少角色。我收到了错误信息。
Object 'foo' is of a data type that is not supported by the CHANGETABLE function. The object must be a user-defined table.
我尝试了以下方法。我添加了临时表和触发器,当视图发生更改时,它们可以将更改的数据插入临时表。但是,它也失败了,因为它被拒绝了许可。
CREATE TABLE dbo.[CHANGES_FROM_A_VIEW] (
[VERSION] [int] IDENTITY(1,1) NOT NULL,
[USERID] [nvarchar](48) NOT NULL,
CONSTRAINT [UNIQUE_VERSION] PRIMARY KEY CLUSTERED ( [VERSION] ASC)
)
CREATE TRIGGER [SOMETHING_CHANGED] ON dbo.[VIEW_OF_USER_CREDENTIAL] ...
ALTER DATABASE database_name
SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS,AUTO_CLEANUP = ON)
ALTER TABLE [CHANGES_FROM_A_VIEW]
ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON)
SELECT * FROM CHANGETABLE(CHANGES dbo.CHANGES_FROM_A_VIEW, 0) AS C
有人知道解决这个问题的方法吗?
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报