Sql-Server
截斷表需要哪些權限?
我有一個對數據庫具有以下權限的 SQL 帳戶:
您看到此帳戶所屬的
db_executor
角色是由以下腳本創建的:CREATE ROLE [db_executor] AUTHORIZATION [dbo] GO GRANT EXECUTE TO [db_executor] GO
當我在桌子上執行 a
select
,update
,insert
or時,它工作正常。delete
當我嘗試truncate
使用桌子時,它給了我這個錯誤資訊:找不到對象“TableName”,因為它不存在或您沒有權限。
此帳戶缺少什麼權限?
查找此資訊的最佳位置是線上書籍。
TRUNCATE TABLE
這裡的文章指出:所需的最低權限是對 table_name 的 ALTER。TRUNCATE TABLE 權限預設授予表所有者、sysadmin 固定伺服器角色成員以及 db_owner 和 db_ddladmin 固定數據庫角色,並且不可轉讓。但是,您可以將 TRUNCATE TABLE 語句合併到模組(例如儲存過程)中,並使用 EXECUTE AS 子句授予模組適當的權限。
所以 ALTER 是所需的最低權限。您可以作為 DB Owner 獲得它,也可以作為 DB_DDLAdmin 獲得它。或者只是授予更改。
如果您考慮一下 truncate 的作用以及它的工作原理,這是有道理的,這是一個非常“嚴厲”的命令,它會清空數據表并快速執行。