公司的业务程序使用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的权限给这个用户不就可以了