我对 SQL Server 2008 中的用户定义表类型有疑问。
为了满足 ASP.NET 应用程序的需要,我们在 SQL Server 2008 上定义了自己的表类型,以便将它们用作存储过程中的参数(在 ASP.NET 应用程序中执行 SQL 命令时,我们将 DataTable 对象作为参数传递给存储过程在此处查看示例)。
问题是,当我们从 ASP.NET 运行 Sql 命令(执行存储过程)时,会出现错误:
“在对象 'ourTableType'、数据库 'ourDatabase'、架构 'ourSchema' 上拒绝了 EXECUTE 权限。”
为什么会这样?为什么我们需要设置用户定义表类型的权限?仅对使用它的存储过程设置权限不够吗?如果无论如何都必须设置权限,为什么属性窗口中没有要设置的
我还不明白的是,在属性窗口中将权限设置为
为了满足 ASP.NET 应用程序的需要,我们在 SQL Server 2008 上定义了自己的表类型,以便将它们用作存储过程中的参数(在 ASP.NET 应用程序中执行 SQL 命令时,我们将 DataTable 对象作为参数传递给存储过程在此处查看示例)。
问题是,当我们从 ASP.NET 运行 Sql 命令(执行存储过程)时,会出现错误:
“在对象 'ourTableType'、数据库 'ourDatabase'、架构 'ourSchema' 上拒绝了 EXECUTE 权限。”
为什么会这样?为什么我们需要设置用户定义表类型的权限?仅对使用它的存储过程设置权限不够吗?如果无论如何都必须设置权限,为什么属性窗口中没有要设置的
EXECUTE
权限类型(我只能看到Control
、References
、Take Ownership
、View Definition
)?我还不明白的是,在属性窗口中将权限设置为
Control
可以解决问题,存储过程可以正常运行。
AS dbo
。像这样:GRANT EXEC ON TYPE::[schema].[typename] TO [User] AS dbo
。对我有用。 - Jonathan