背景:
我有两个账户用于同一个数据库,一个是“主账户”,另一个是(子)账户,我用它来连接服务器,以便管理用户所能够和不能做的事情。在我获得访问权限之前,这个账户上已经拥有了很多权限,所以我不知道所有权限是什么,除了我自己管理的那些。
某个人创建了一个用户定义的表类型,为什么他们这样做,我就不知道了。
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
主账户可以完美地执行和修改此存储过程,但子账户在使用AffectedServiceList类型时无法运行或修改此存储过程,因为它会出现以下错误:
Cannot find the type 'AffectedServiceList', because it does not exist or you do not have permission.
我尝试过执行以下命令:grant execute on type::dbo.AFFECTEDSERVICELIST to subaccount
但仍然返回相同的权限错误。我确定这是一个权限问题,因为当我在主账户上尝试修改时,只会显示:
Command(s) completed successfully.