日期:2014-05-19  浏览次数:20488 次

一个数据库用户的问题,请高手指点!
公司的业务程序使用sqlserver2000后台数据库

由于最初都是使用sa做客户端和服务器的连接,觉得不安全,最近新创建了一个用户
aaa,没有给aaa任何服务器角色,只给了业务数据库db1的db_owner角色。

现在让客户端使用aaa用户连接服务器后,问题来了,某个业务报表使用一个后台存储过程ppp,ppp中有个创建函数fff的语句

IF   EXISTS(SELECT   *   FROM   SYSOBJECTS   WHERE   NAME= 'fff ')
DROP   FUNCTION   fff
BEGIN
EXEC( 'CREATE   FUNCTION   fff()
RETURNS   @tmptbl   TABLE(id   int,name   varchar(20)....).......... ')

然后存储过程ppp中有   select   .....from   fff()   语句

但是现在只要使用这个报表就会报错,提示对象名:fff不存在

看了一下企业管理器,有个叫fff用户自定义函数,所有者是aaa(以前当然是dbo)
现在用sa连接服务器,在查询分析器里面   再手动创建一个也叫fff的函数,所有者为dbo了,问题才能解决。

系统里面还有好多业务程序用到的自定义函数,难道都得分别为两个所有者创建吗?
到底怎样解决这类问题?

------解决方案--------------------
把函数的exec的权限给这个用户不就可以了