我用的是SQL SERVER2000,新建了一个帐号User1,服务器角色不是SystemAdministrator,并用User1创建了存储过程,为什么我用sa登录时不能直接执行所有者为User1的存储过程呢?要用User1.ProcedureName才能执行,要怎样才能直接用存储过程名就能执行呢?

解决方案 »

  1.   

    grant exec on ProcedureName to sa
      

  2.   

     
    create user User1 for login sa
    with DEFAULT_SCHEMA=User1
      

  3.   

    grant exec on user1.eee to sa
    提示:不存在这样的用户或组,咋办呢
      

  4.   


    你不是说是登陆名吗?用user1登录,再直接grant exec on eee to sa
      

  5.   

    我不是想只授权一个存储过程,我是想所有的用User1创建的存储过程都可以让sa直接执行。
    要怎样设置呢?
      

  6.   


    EXEC sp_addrolemember 'user1','sa'
    GO
      

  7.   

    服务器: 消息 15014,级别 16,状态 1,过程 sp_addrolemember,行 37
    当前数据库中不存在角色 'user1'。换成
    EXEC sp_addrolemember 'db_owner','sa'
    就提示
    服务器: 消息 15410,级别 11,状态 1,过程 sp_addrolemember,行 66
    此数据库中不存在用户或角色 'sa'。
      

  8.   

    exec sp_helpuser 'User1'
    go先执行上面一条查看User1的RoleNameexec sp_addrolemember 'User1的RoleName','sa'
    go
      

  9.   

    路飞,你是用Delphi的吗?我也是个Delphi程序员呵
      

  10.   


    Delphi懂一点点,C#和ASP.NET懂多一点点...
      

  11.   

    exec sp_helpuser 'User1'没有RoleName
    只有UserName\GroupName\LoginName\DefDBName真是头疼
      

  12.   


    你看看这个http://www.yesky.com/imagesnew/software/tsql/ts_sp_00_519s.htm
    其中安全过程就是这方面的
      

  13.   

    你试试用User1登录,然后grant all to sa