拼接语句跟数据库权限的问题,多谢大家了

drysea 2009-07-07 10:09:07
系统要求把数据库用户的权限控制在特定几个存储过程
也就是对于某用户 web来说,表跟函数跟视图都是不可见的

其中有一个存储过程,必须用拼接语句来实现,就是这个存储过程,总是提示用户web对其中用到的表,函数没有select权限

而我又不能提高web的权限,请问各位大侠,有什么办法么?
...全文
47 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
luloyun 2009-07-07
  • 打赏
  • 举报
回复
这个只是在当前上下文中,对主体的 IMPERSONATE 权限,并非真正的权限提升。
drysea 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 luloyun 的回复:]
这个是数据库的强项,对于当前User,对于usp_demo没有查看,预览,只有执行的权限。但是对于Paul用户,可以拥有对于数据库所有的权限,那么对于当前User,在执行的时候,可以赋予其拥有Paul一样的权限去执行。 类似如下编写存储过程。
CREATE PROCEDURE dbo.usp_Demo
WITH EXECUTE AS 'paul'
AS
...


[/Quote]

如果用你这种做法,那调用这个存储过程的用户就该是paul了吧,这个就相当于提升权限了啊。。。
还是不能解决我的问题。。。哎。。。
luloyun 2009-07-07
  • 打赏
  • 举报
回复
这个是数据库的强项,对于当前User,对于usp_demo没有查看,预览,只有执行的权限。但是对于Paul用户,可以拥有对于数据库所有的权限,那么对于当前User,在执行的时候,可以赋予其拥有Paul一样的权限去执行。 类似如下编写存储过程。
CREATE PROCEDURE dbo.usp_Demo
WITH EXECUTE AS 'paul'
AS
...

光宇广贞 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fredrickhu 的回复:]
在前台进行好了 数据库是不好实现的
[/Quote]

和我想的一样

不过我仍然把那个叫后台
--小F-- 2009-07-07
  • 打赏
  • 举报
回复
在前台进行好了 数据库是不好实现的
drysea 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 luloyun 的回复:]
请使用EXECUTE AS USER = 'paul';
切换上下文到一个有权限执行用户paul,然后,在使用Revert切换回当前用户。


[/Quote]

就是在存储过程内部需要的部分换一个user?对于程序是没有任何影响的吧?会不会有什么安全问题嘞?
这上面真的不是很懂
luloyun 2009-07-07
  • 打赏
  • 举报
回复
请使用EXECUTE AS USER = 'paul';
切换上下文到一个有权限执行用户paul,然后,在使用Revert切换回当前用户。

drysea 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hdhai9451 的回复:]
是因为函数没有授权,是这样解决:
企业管理器-->自定义函数-->函数名-->属性-->权限-->找到对应的访问用户,然后在select下面打“勾”


[/Quote]

这个我知道,如果不用拼接语句的话,不直接授权也是可以访问的
而我要做的就是把权限只限制在指定的存储过程上,公司的保密需要。。。
Andy__Huang 2009-07-07
  • 打赏
  • 举报
回复
是因为函数没有授权,是这样解决:
企业管理器-->自定义函数-->函数名-->属性-->权限-->找到对应的访问用户,然后在select下面打“勾”

usher_gml 2009-07-07
  • 打赏
  • 举报
回复
UP
光宇广贞 2009-07-07
  • 打赏
  • 举报
回复
我在想,为什么不放在BLL层,让用户提交需求给BLL层,然后BLL层拥有权限来从数据库中提取数据,然后再选择性地反馈给用户。

用户和数据库直接沟通是有这个问题哈……等于用户是一个数据库操作员了……用三层设计模式来解决这个问题吧……一点点想法。
drysea 2009-07-07
  • 打赏
  • 举报
回复
..........因为要实现根据传入的参数进行排序
参数包括列名跟排序规则,情况比较多样

看来只能跟程序员讨论看看,放在代码部分完成了。。。。。。
htl258_Tony 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 haiwer 的回复:]
那是没有办法的,除非
1、增加权限
2、修改存储过程,不访问着几个表,包括连接SQL过程中
[/Quote]UP
knifewei 2009-07-07
  • 打赏
  • 举报
回复
应该开放只读的权限吧
昵称被占用了 2009-07-07
  • 打赏
  • 举报
回复
那是没有办法的,除非
1、增加权限
2、修改存储过程,不访问着几个表,包括连接SQL过程中

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧