我对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
在属性窗口中将权限设置为可以解决问题,并且存储过程可以正常运行。