gpt4 book ai didi

sql-server - SQL SERVER 更改存储过程内的安全上下文

转载 作者:行者123 更新时间:2023-12-04 06:14:44 24 4
gpt4 key购买 nike

在某些存储过程中,我必须将安全上下文更改为更强大的登录。
我试过这样的事情:

USE ProjectsDB
EXECUTE AS login = 'sa'

--SOME OPERATIONS

REVERT;

但我收到以下错误消息:
Msg 15406, Level 16, State 1, Line 3
Cannot execute as the server principal because the principal "sa" does not exist,
this type of principal cannot be impersonated, or you do not have permission.

“sa”登录名具有所有需要的权限。
可能是什么问题?

伊兰。

最佳答案

您需要具有“IMPERSONATE”权限才能执行此操作。查看 GRANT IMPERSONATE陈述。

除此之外,我认为在 sql server 中执行此操作的最佳方法(而不是将权限级别提高到 SA)是:

  • 创建证书
  • 使用证书对存储过程进行签名
  • 从证书中删除私钥
  • 从证书创建用户
  • 授予用户所需的权限

  • 如果您需要“服务器范围的权限”,则可选:
  • 将证书导出到磁盘
  • 导入master数据库中的证书
  • 从证书创建登录
  • 授予登录权限

  • 如果您需要“跨数据库权限”,则更多可选
  • 在要授予权限的数据库中导入证书
  • 从证书创建用户。
  • 授予用户正确的权限

  • SQL Server 将通过证书将所有用户/登录权限链接在一起,当您执行签名过程时,它将使用链接到证书的用户的权限。

    关于sql-server - SQL SERVER 更改存储过程内的安全上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7400707/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com