【问题标题】:How to prevent truncate data on the tables which have been enabled change tracking?如何防止截断已启用更改跟踪的表上的数据?
【发布时间】:2020-08-08 06:45:16
【问题描述】:

我们已经在一些表格上启用了更改跟踪。最近,我们发现有人截断了一张表上的数据。是否可以防止用户截断已启用更改跟踪的表上的数据?

SQL Server 版本为 SQL Server 2008 R2 及以上。

【问题讨论】:

标签: sql-server change-tracking


【解决方案1】:

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 &lt;table name&gt; FROM &lt;principal name&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 2023-03-18
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多