Sqlserver数据库中,跨权限履行语句

ca88官网,难题源于:近期有同事必要履行批量去除语句。依据他提供的事体须要,推荐她动用“TRUNCATE
TABLE”语句。但运用该语句需求 ALTESportage权限,这与履行用户的剧中人物不符。

消除办法:使用EXECUTE AS语句修改执行权限。代码如下:

ALTER PROCEDURE [dbo].[sp_TruncateTable] 
    @TableName varchar(200) 
    WITH EXECUTE AS SELF
AS 
BEGIN 
    --打印出当前执行上下文用户
    SELECT  nt_username, loginame 
    FROM sys.sysprocesses 
    WHERE spid = @@SPID

    SET NOCOUNT ON; 
    DECLARE @TruncateSql nvarchar(2000);
    SET @TruncateSql = 'TRUNCATE TABLE ' + @TableName 
    EXEC (@TruncateSql) 
END

 

经过打字与印刷出来的loginame能够看到,执行用户新闻已经被涂改。

相关文章