sp_setapprole
激活与当前数据库中的应用程序角色关联的权限。语法
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'

解决方案 »

  1.   

    sp_setapprole
    激活与当前数据库中的应用程序角色关联的权限。语法
    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'