• 相关软件
    >sp_setapprole 创建者:webmaster 更新时间:2006-02-16 15:51

    激活与当前数据库中的应用程序角色关联的权限。



    语法


    sp_setapprole [@rolename =] 'role' ,

        
    [@password =] {Encrypt N 'password'} | 'password'

        [,[@encrypt =] 'encrypt_style']



    参数


    [@rolename =] 'role'



    是在当前数据库中定义的应用程序角色名。role 的数据类型是 sysname,没有默认设置。role 必须存在于当前数据库中。



    [@password =] {Encrypt N 'password'} | 'password'



    是激活应用程序角色所需的密码。password 的数据类型是 sysname,没有默认设置。可以使用 ODBC 规范 Encrypt 函数对 password 加密。使用 Encrypt 函数时,必须在密码的前面加上 N 以将密码转换成 Unicode 字符串。



    [@encrypt =] 'encrypt_style'



    指定 password 使用的加密样式。encrypt_style 的数据类型为 varchar(10),可以是下列值之一。



















    描述
    None该密码不加密并以明文形式传递给 Microsoft® SQL Server™。这是默认设置。
    Odbc将密码发送到 SQL Server 之前,使用 ODBC 规范 Encrypt 函数对密码加密。这只能通过 ODBC 客户端或用于 SQL Server 的 OLE DB 提供程序指定。DB-Library 客户端不能使用该选项。



    返回代码值


    0(成功)或 1(失败)



    注释


    应用程序角色没有成员,因此不必将用户添加到应用程序角色。未激活应用程序角色时,sp_setapprole 对用户在当前数据库内其它角色或组中的成员资格无效。



    激活应用程序角色时,将忽略通常与激活应用程序角色的用户连接关联的权限。用户连接获得与(应用程序角色在其中定义的)数据库的应用程序角色关联的权限。用户连接只能通过授予另一个数据库的 guest 用户帐户的权限来获得对该数据库的访问。因此,如果数据库中没有 guest 用户帐户,则连接无法获得对该数据库的访问。



    使用 sp_setapprole 激活某个应用程序角色后,在用户与 SQL Server 断开连接之前不能在当前数据库内停用该角色。



    若要保护应用程序角色密码,请使用 ODBC Encrypt 函数对密码加密并将 odbc 指定为加密方法。



    sp_setapprole 存储过程只能由直接 Transact-SQL 语句执行,不能在另一个存储过程内或从用户定义事务内执行。



    权限


    任何用户都可以通过为角色提供正确的密码来执行 sp_setapprole



    示例


    A. 激活应用程序角色但不对密码加密


    下例使用明文密码 AsDeFXX 激活名为 SalesAppRole 的应用程序角色,AsDeFXX 是使用特别为当前用户使用的应用程序设计的权限创建的。



    EXEC sp_setapprole 'SalesApprole', 'AsDeFXX'


    B. 激活应用程序角色并对密码加密


    下例用密码 pswd 激活 Test 应用程序角色,并且在将此密码发送到 SQL Server 之前对其加密。



    EXEC sp_setapprole 'Test', {Encrypt N 'pswd'}, 'odbc'
    相关文章
    本页查看次数: