所以我的 DBA 不希望开发人员授予 Alter table 权限。现在我们创建的过程之一需要截断表(因为显然delete只删除记录,但truncate 也释放了空间)。
现在为了使用 truncate 所需的最低权限是“Alter table”。(来源)
但也有一个解决方案描述为“创建一个存储过程,以所有者身份执行仅对一个表或对任何表的存储过程”(由 user3854427 提供)。
我的问题是对他提供的代码的回应。嵌入代码以方便参考:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Yimy Orley Asprilla
-- Create date: Julio 16 de 2014
-- Description: Función para hacer TRUNCATE a una tabla.
-- =============================================
ALTER PROCEDURE [dbo].[spTruncate]
@nameTable varchar(60)
WITH EXECUTE AS OWNER
AS
SET NOCOUNT OFF;
DECLARE @QUERY NVARCHAR(200);
SET @QUERY = N'TRUNCATE TABLE ' + @nameTable + ';' …Run Code Online (Sandbox Code Playgroud)