【发布时间】:2020-08-08 06:45:16
【问题描述】:
我们已经在一些表格上启用了更改跟踪。最近,我们发现有人截断了一张表上的数据。是否可以防止用户截断已启用更改跟踪的表上的数据?
SQL Server 版本为 SQL Server 2008 R2 及以上。
【问题讨论】:
标签: sql-server change-tracking
我们已经在一些表格上启用了更改跟踪。最近,我们发现有人截断了一张表上的数据。是否可以防止用户截断已启用更改跟踪的表上的数据?
SQL Server 版本为 SQL Server 2008 R2 及以上。
【问题讨论】:
标签: sql-server change-tracking
TRUNCATE TABLE 至少需要 ALTER TABLE 权限。要找出哪些表启用了更改跟踪,请运行:
`USE <database name>
GO
SELECT s.name AS Schema_Name
,tb.name AS Table_Name
,tb.object_id, tb.type
,tb.type_desc
,tb.is_tracked_by_cdc
FROM sys.tables tb
INNER JOIN sys.schemas s on s.schema_id = tb.schema_id
`WHERE tb.is_tracked_by_cdc = 1`
对于每个表,撤销不应拥有的数据库级主体(数据库用户、角色或应用程序角色)的 ALTER TABLE 权限:
REVOKE ALTER TABLE ON <table name> FROM <principal name>
【讨论】: