社区
疑难问题
帖子详情
关于表格权限问题
dongrui121
2009-12-04 03:48:36
表格tableA
存储过程proA,在存储过程内部通过组装@sql,然后exec(@sql)来查询tableA的数据。
存储过程proB,在存储过程内写select * from tableA,直接查询tableA的数据。
赋予数据库用户对proA的执行权限,不给tableA查询权限。
结果:
proA不能查询
proB能成功查询
问题:为什么ProA不能查询?要如何解决?
...全文
154
19
打赏
收藏
关于表格权限问题
表格tableA 存储过程proA,在存储过程内部通过组装@sql,然后exec(@sql)来查询tableA的数据。 存储过程proB,在存储过程内写select * from tableA,直接查询tableA的数据。 赋予数据库用户对proA的执行权限,不给tableA查询权限。 结果: proA不能查询 proB能成功查询 问题:为什么ProA不能查询?要如何解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dongrui121
2009-12-05
打赏
举报
回复
[Quote=引用 7 楼 duanze82 的回复:]
存储过程的 EXECUTE 权限默认给该存储过程的所有者,该所有者可以将此权限转让给其他用户。当遇到 EXECUTE 语句时,即使 EXECUTE 语句是在存储过程中,也会检查在 EXECUTE 字符串内使用该语句的权限。当运行一个执行字符串的存储过程时,系统会在执行该过程的用户环境中,而不是在创建该过程的用户环境中检查权限。但是,如果某用户拥有两个存储过程,并且第一个过程调用第二个过程,则在第二个过程中不进行 EXECUTE 权限检查。
[/Quote]
我用两个存储过程,第一个存储过程调用第二个存储过程,把动态生成的@sql传递给第二个存储过程,但是还是不行,仍然说没有权限!
biny101
2009-12-05
打赏
举报
回复
UP
dongrui121
2009-12-05
打赏
举报
回复
召唤高人~
dongrui121
2009-12-04
打赏
举报
回复
这个权限问题 确实麻烦.
win7cc
2009-12-04
打赏
举报
回复
存储过程内部通过组装@sql...... 到底存储过程是什么
長胸為富
2009-12-04
打赏
举报
回复
你可能是某个地方设置有问题,这个是帮助中的原话
feixianxxx
2009-12-04
打赏
举报
回复
别用动态 行不
dongrui121
2009-12-04
打赏
举报
回复
现在问题就是存储过程中是动态组合的@sql语句,所以就要用execute(@sql)来执行,这样会检查在 EXECUTE 字符串内使用该语句的权限,也就是检查用户是否拥有该表的查询权限。
我不想给表格权限,但是存储过程的execute(@sql)又需要这个权限,怎么办?
lweia
2009-12-04
打赏
举报
回复
能给一个测试脚本么?
我读不懂,没法回答...
feixianxxx
2009-12-04
打赏
举报
回复
执行存储过程 只需要存储过程的权限 不需要内部基表的权限
dongrui121
2009-12-04
打赏
举报
回复
[Quote=引用 7 楼 duanze82 的回复:]
存储过程的 EXECUTE 权限默认给该存储过程的所有者,该所有者可以将此权限转让给其他用户。当遇到 EXECUTE 语句时,即使 EXECUTE 语句是在存储过程中,也会检查在 EXECUTE 字符串内使用该语句的权限。当运行一个执行字符串的存储过程时,系统会在执行该过程的用户环境中,而不是在创建该过程的用户环境中检查权限。但是,如果某用户拥有两个存储过程,并且第一个过程调用第二个过程,则在第二个过程中不进行 EXECUTE 权限检查。
[/Quote]
上面说错了
我将动态生成的@sql作为参数,传递给第二个存储过程proC,在proC中执行execute(@sql),并赋给用户proC的执行权限,还是不行。说没有权限
dongrui121
2009-12-04
打赏
举报
回复
[Quote=引用 7 楼 duanze82 的回复:]
存储过程的 EXECUTE 权限默认给该存储过程的所有者,该所有者可以将此权限转让给其他用户。当遇到 EXECUTE 语句时,即使 EXECUTE 语句是在存储过程中,也会检查在 EXECUTE 字符串内使用该语句的权限。当运行一个执行字符串的存储过程时,系统会在执行该过程的用户环境中,而不是在创建该过程的用户环境中检查权限。但是,如果某用户拥有两个存储过程,并且第一个过程调用第二个过程,则在第二个过程中不进行 EXECUTE 权限检查。
[/Quote]
我将动态生成的@sql作为参数,传递给第二个存储过程proB,在proB中执行execute(@sql),并赋给用户proB的执行权限,还是不行。说没有权限
長胸為富
2009-12-04
打赏
举报
回复
存储过程的 EXECUTE 权限默认给该存储过程的所有者,该所有者可以将此权限转让给其他用户。当遇到 EXECUTE 语句时,即使 EXECUTE 语句是在存储过程中,也会检查在 EXECUTE 字符串内使用该语句的权限。当运行一个执行字符串的存储过程时,系统会在执行该过程的用户环境中,而不是在创建该过程的用户环境中检查权限。但是,如果某用户拥有两个存储过程,并且第一个过程调用第二个过程,则在第二个过程中不进行 EXECUTE 权限检查。
長胸為富
2009-12-04
打赏
举报
回复
当遇到 EXECUTE 语句时,即使 EXECUTE 语句是在存储过程中,也会检查在 EXECUTE 字符串内使用该语句的权限。
--小F--
2009-12-04
打赏
举报
回复
proA不能查询
你的意思是用存储过程来调用存储过程?
华夏小卒
2009-12-04
打赏
举报
回复
赋予数据库用户对proA的执行权限,不给tableA查询权限。
感觉这个是自相矛盾。
权限不是很懂!~~
dongrui121
2009-12-04
打赏
举报
回复
2楼,这个没有说明这个问题呀。
--小F--
2009-12-04
打赏
举报
回复
http://blog.csdn.net/fredrickhu/archive/2009/09/20/4573398.aspx
权限设置
MVC+EF框架+EasyUI实现
权限
管理 源码程序
MVC+EF框架+EasyUI实现
权限
管理是对
权限
的基本操作的操作,具体的可以参看我的博客http://www.cnblogs.com/hanyinglong/
ASP.NET MVC+EF框架+EasyUI实现
权限
管理系列(24)之前的代码
ASP.NET MVC+EF框架+EasyUI实现
权限
管理系列(24)之前的代码,博客地址:http://www.cnblogs.com/hanyinglong
读和写注册表文件的例子
读和写注册表文件的例子
easyui+ztree后台管理系统模板
简单的 easyui+ztree后台管理系统模板
ssm后台管理系统框架(Spring mvc + mybatis + mysql + easyui )附mysql数据库
ssm后台管理系统框架(Spring mvc + mybatis + mysql + easyui ) 附mysql数据库CRM-DB文件夹下面 树菜单,基本增删改查,自定义界面样式
疑难问题
22,294
社区成员
121,729
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章