如何在 SQL Server 中从截断中保存我的表

拉朱班达拉姆 |

我需要从update限制我的表delete

For Updateand DeleteI'm Using an Instead oftrigger,它工作正常。

但是如果我使用TRUNCATE命令,它会删除我的数据。

我需要限制truncate或任何其他表修改过程。

任何人都可以提出您的宝贵建议。

拉努

要运行TRUNCATE语句,您需要拥有ALTER对象权限;根据文档:TRUNCATE TABLE (Transact-SQL) - Permissions

如果要阻止用户/角色在TRUNCATE表上使用该语句,则需要使用以下内容(替换大括号 ( {}) 中的文本):

USE {YourDatabase}
DENY ALTER ON {YourTable} TO {User/Role};

您可以使用快速测试脚本轻松测试这是否有效:

USE Sandbox;
GO

CREATE TABLE dbo.TestTable (Id int IDENTITY(1,1), String varchar(10));

INSERT INTO dbo.TestTable (String)
VALUES ('asdfhj'),('asdjkas'),('asdjkhsad');
GO

CREATE USER TestUser WITHOUT LOGIN;

ALTER ROLE db_ddladmin ADD MEMBER TestUser;
ALTER ROLE db_datareader ADD MEMBER TestUser;
ALTER ROLE db_datawriter ADD MEMBER TestUser;
GO

EXECUTE AS USER = 'TestUser';
GO
TRUNCATE TABLE dbo.TestTable; --This works
GO
REVERT;
GO

SELECT *
FROM dbo.TestTable;

INSERT INTO dbo.TestTable (String)
VALUES ('asdfhj'),('asdjkas'),('asdjkhsad');

DENY ALTER ON dbo.TestTable TO TestUser;
GO

EXECUTE AS USER = 'TestUser';
GO
TRUNCATE TABLE dbo.TestTable; --This fails
GO
REVERT;
GO

SELECT *
FROM dbo.TestTable;
GO
--Clean up
DROP TABLE dbo.TestTable;
DROP USER TestUser;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在SQL Server中保存我的查询(公式)

来自分类Dev

如何在SQL Server表中保存回历日期?什么类型的列?

来自分类Dev

如何在SQL Server中保存约会学生的缺席?

来自分类Dev

如何在SQL Server Management Studio中保存更改

来自分类Dev

如何在 SQL Server 中重塑表?

来自分类Dev

如何在pyspark SQL中保存表?

来自分类常见问题

如何在SQL Server中编写foreach?

来自分类Dev

如何在SQL Server中串联datepart?

来自分类Dev

如何在SQL Server中拆分URL

来自分类Dev

如何在SQL Server中多联接

来自分类Dev

如何在SQL Server中“使用”架构

来自分类Dev

如何在SQL Server中存储令牌

来自分类Dev

Coalesce如何在SQL Server中工作?

来自分类Dev

如何在SQL Server中存储图像

来自分类Dev

如何在SQL Server中获得零

来自分类Dev

如何在 sql server 中打印这个?

来自分类Dev

如何在Sql Server数据工具中运行保存的脚本

来自分类Dev

如何在SQL Server中的表中重复值?

来自分类Dev

如何在SQL Server中查找循环依赖表

来自分类Dev

从C#,如何在SQL Server中查找表的列名?

来自分类Dev

如何在Sql Server表中查找所选行的大小?

来自分类Dev

如何在SQL Server表中存储zip文件

来自分类Dev

如何在SQL Server表中插入多个值?

来自分类Dev

如何在SQL Server中多选筛选EAV表

来自分类Dev

如何在Sql Server表中查找所选行的大小?

来自分类Dev

如何在SQL Server中获得合并/合并表?

来自分类Dev

如何在SQL SERVER中更新数据透视表

来自分类Dev

如何在SQL SERVER中合并两个表?

来自分类Dev

如何在sql server中合并两个表?