编辑:如何为用户定义的类型提供exec权限?
看起来“Bug2”是用户定义的类型。
select * from sys.types
where is_user_defined = 1 and name = 'Bug2'
现在摆脱这个错误:
“数据库对象'Bug2'上的EXECUTE权限被拒绝 'abc',schema'dbo'“
我应该使用什么命令?
我只是在玩别人的代码并碰到这个:
如果我这样做
DECLARE @bugList Bug2
SELECT *
FROM @bugList
然后我得到了结果
但如果我这样做
SELECT *
FROM Bug2
然后我得到了
无效的对象名称'Bug2'。
这里发生了什么?
基本上我正在尝试运行使用此“Bug2”的存储过程,因为存在一些权限问题,我在运行时遇到此错误:
对象'Bug2',数据库'abc',架构'dbo'上的EXECUTE权限被拒绝。
所以我想做的就是:
GRANT EXEC ON Bug2 TO PUBLIC
但SQL Server无法找到此对象“Bug2”,因此会抛出错误。
有人可以帮忙吗?
答案 0 :(得分:0)
确定。用它来工作:
GRANT EXECUTE ON TYPE::Bug2 to PUBLIC
谢谢!
答案 1 :(得分:0)
而不是使用sys.types
使用sys.objects
。如果Bug2
是一个表,则查询如下:
SELECT * FROM sys.objects WHERE name='Bug2' AND type='U'
答案 2 :(得分:0)
它是user-defined table type(通常用于表值参数)。查看db_nm&gt;可编程性&gt;类型&gt;用户定义的表类型,您将看到一个df$Y <- df[-1][cbind(1:nrow(df), df$Z)]
df
# Z Y_1 Y_2 Y_3 Y
#1 3 0.89124772 1.4377700 0.05226285 0.05226285
#2 1 0.89186873 -0.6984839 -0.86141525 0.89186873
#3 1 -0.01315678 1.5193461 0.18290065 -0.01315678
#4 3 -0.57857274 -1.4445197 2.03764943 2.03764943
#5 3 -0.19793692 -0.1818225 1.10270877 1.10270877
#6 2 1.48291431 2.7264541 0.70129357 2.72645410
对象。您可以解决该对象的权限问题(通过脚本或GUI)。
脚本选项:
df <- structure(list(Z = c(3L, 1L, 1L, 3L, 3L, 2L), Y_1 = c(0.89124772,
0.89186873, -0.01315678, -0.57857274, -0.19793692, 1.48291431
), Y_2 = c(1.43777, -0.6984839, 1.5193461, -1.4445197, -0.1818225,
2.7264541), Y_3 = c(0.05226285, -0.86141525, 0.18290065, 2.03764943,
1.10270877, 0.70129357)), .Names = c("Z", "Y_1", "Y_2", "Y_3"
), row.names = c("1", "2", "3", "4", "5", "6"), class = "data.frame")