gpt4 book ai didi

sql-server - 使用用户定义的表类型需要什么权限

转载 作者:行者123 更新时间:2023-12-03 02:53:54 26 4
gpt4 key购买 nike

背景:

我有两个用于同一数据库的帐户,一个是“主”帐户,另一个(子)帐户用于我的网站,用于连接到服务器,以便我可以管理用户可以做什么和不能做什么。在我访问该帐户之前,该帐户的许多权限已经存在,因此除了我管理的权限之外,我不知道所有权限到底是什么。

有一个其他人创建的用户定义的表类型,不要问我为什么这样做,

CREATE TYPE [dbo].[AffectedServiceList] AS TABLE(
[AffSerName] [nvarchar](200) NULL
)
GO

此类型用于像这样的存储过程

ALTER PROCEDURE [dbo].[Contractsetup]  @OtherParams, --Easier than typing them all
@list dbo.AFFECTEDSERVICELIST READONLY

主账户可以完美执行和修改此过程,但子账户在使用受影响的服务列表类型时无法运行或修改此存储过程,因为它收到错误

Cannot find the type 'AffectedServiceList', because it does not exist or you do not have permission.

我已经尝试这样做将 type::dbo.AFFECTEDSERVICELIST 上的执行授予子帐户

但它仍然返回与权限有关的相同错误。我已将其消除为权限,因为当我尝试在主帐户上进行修改时,我刚刚得到

Command(s) completed successfully.

最佳答案

要使用用户定义的表类型,您需要具有 EXECUTECONTROL 权限。您的代码

grant execute on type::dbo.AFFECTEDSERVICELIST to subaccount

正确。

这里缺少的是 REFERENCES 权限:

grant references on type::dbo.AFFECTEDSERVICELIST to subaccount

这需要能够在代码中引用此类型。

要只能使用 UDT 创建过程,您只需要 REFERENCES 权限。需要 EXECUTECONTROL 才能执行代码(proc)

关于sql-server - 使用用户定义的表类型需要什么权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46787643/

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