MS SQLSERVER 中的应有程序角色

[复制链接]
查看11 | 回复2 | 2011-5-4 17:44:51 | 显示全部楼层 |阅读模式
在MS SQLSERVER中有一个应用程序角色,那这一个角色,怎么在应用程序中使用,如果我有一个vbApp.exe 的应用程序,那怎么使用这个角色?


回复

使用道具 举报

千问 | 2011-5-4 17:44:51 | 显示全部楼层
该角色可以在程序运行中为用户进行授权,
程序退出后取消用户权限
比如用户q平时对a_test没有权限,但在程序
运行时就必须对a_test进删除
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'

请参见
建立应用程序安全和应用程序角色
sp_addapprole
sp_dropapprole
系统存储过程
回复

使用道具 举报

千问 | 2011-5-4 17:44:51 | 显示全部楼层
好了,搞明白了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行