rt

解决方案 »

  1.   

    SETUSER sql 2005 中可以用 execute as具体的用法查联机帮助(EXECUTE AS 的一个用例参考: http://topic.csdn.net/u/20080911/12/20934cef-c125-4c9d-ad35-339c67a1ad50.html?seed=918670548)
      

  2.   

    t-sql无这功能吧。2005下可以试试
    EXECUTE AS LOGIN ..
    EXECUTE AS USER ..
      

  3.   


    EXECUTE AS LOGIN = 'sa'
      

  4.   

    请问SETUSER 语法是什么样子的?to 晴天!我想执行openrowset,但必须是sysadmin的帐户,所以我想动态改变帐号执行完成后再切换原来的帐号,2005里可以通过修改注册表DisallowAdhocAccess=0来修改,但2000不知道怎么改?
      

  5.   

    setuser 仅是模拟,一旦用use改当前库时就会消失
      

  6.   

    select SUSER_SNAME()--查看當前登陸用戶
      

  7.   

    可以使用 AS { LOGIN | USER } = ' name ' 子句切换动态语句的执行上下文。当将上下文切换指定为 EXECUTE ('string') AS <context_specification> 时,上下文切换的持续时间限制为执行查询的范围。有关详细信息,请参阅了解上下文切换。指定用户名或登录名
    在 AS { LOGIN | USER } = ' name ' 中指定的用户或登录名必须分别为 sys.database_principals 或 sys.server_principals 的主体,否则语句将失败。此外,还必须为该主体授予 IMPERSONATE 权限。除非调用方是数据库所有者或是 sysadmin 固定服务器角色的成员,否则当用户使用 Windows 组成员身份访问数据库或 SQL Server 的实例时,必须存在主体。例如,假设条件如下:CompanyDomain\SQLUsers 组具有对 Sales 数据库的访问权限。 
    CompanyDomain\SqlUser1 是 SQLUsers 的成员,因此具有对 Sales 数据库的隐式访问权限。
    尽管 CompanyDomain\SqlUser1 使用 SQLUsers 组的成员身份有访问数据库的权限, EXECUTE @string_variable AS USER = 'CompanyDomain\SqlUser1' 语句也会失败,因为 CompanyDomain\SqlUser1 不是数据库中的主体。
      

  8.   


    谢谢zjcxc,我有看过您的2005 深入浅出,受益匪浅
      

  9.   

    --更改登录用户
    EXECUTE AS LOGIN = 'jgj\administrator'
    --查看登录名
    select spid,loginame from master..sysprocesses where spid=@@spid--更改登录用户
    EXECUTE AS LOGIN = 'sasa'
    --查看登录名
    select spid,loginame from master..sysprocesses where spid=@@spid