用户定义的表类型是否拒绝EXECUTE权限?

Jan*_*nez 82 asp.net security stored-procedures user-defined-types sql-server-2008

我对SQL Server 2008中的用户定义表类型有疑问.

为了满足ASP.NET应用程序之一的需要,我们在SQL Server 2008上定义了自己的表类型,并将它们用作存储过程中的参数(在ASP.NET应用程序中执行sql命令时,我们将DataTable对象作为存储过程的参数传递看这里的例子)

问题是当我们从ASP.NET运行Sql命令(执行存储过程)时,我们收到一个错误:

对象'ourTableType',数据库'ourDatabase',架构'ourSchema'拒绝EXECUTE权限.

为什么会这样?为什么我们需要为用户定义的表类型设置权限?为什么仅仅对使用它的存储过程设置权限是不够的?如果我们要设置它,不管是什么,为什么没有EXECUTE权限类型在属性窗口中任何设置(我只看到Control,References,Take Ownership,View Definition)?

我还不明白的是,Control在属性窗口中设置权限可以解决问题,并且存储过程可以顺利运行.

mcc*_*002 183

我真的希望你现在已经解决了这个问题,因为这个问题差不多已经有4个月了,但如果你还没有,那么我认为这就是答案.

GRANT EXEC ON TYPE::[schema].[typename] TO [User]
GO
Run Code Online (Sandbox Code Playgroud)

  • 我的2美分:根据您的连接身份验证机制,您可能必须将exec授予公共组.所以你的补助金看起来像这样:GRANT EXEC ON TYPE :: [schema].[typename] TO [Public] GO (9认同)
  • 你救了这一天.Upvote和金星! (4认同)