有一用户 loginid=‘test’,数据库=‘mydb’,db_owner,默认Schema名 ‘test’。
一般情况下,用test登录该数据,可以对dbo.tblxxx和test.tblyyy进行操作,现在写一个存储过程,该存储过程Schema=‘dbo’,有如下代码:delete from tbl1 (dbo)
delete from tbl2 (test,由于该存储过程可由多个用户调用,每个用户均db_owner,各用户有各自不同的默认Schema名,所以此处不能写test.tbl2)存储过程建成后,以test用户登录执行,错误信息指示:tbl2不存在。 (dbo.tbl2不存在,test.tbl2存在)怎么样解决这个问题?谢谢

解决方案 »

  1.   

    --try
    create proc sp_1
    @pama1 int, @pama2 int --,@pama3 int,...
    with EXECUTE AS 'test'
    as
    begin
    delete from dbo.tbl1 
    delete from test.tbl2
    end
      

  2.   

    使用with EXECUTE AS 'user_name' 指定以哪个用户的身份执行
      

  3.   


    对,楼主用的就是2005,2000里面是没有Schema的,,,
      

  4.   

    给那个用户要授予目标对象的访问(SELECT)权啊。
      

  5.   


    加上Schema名称,默认是dbo