USE MYdb--创建一个登录 L_test,默认数据库 mydb
EXEC sp_addlogin 'L_test','123','mydb' --为登录 L_test 在数据库mydb 中添加安全账户 u_test
EXEC sp_grantdbaccess 'L_test','u_test'--创建一个应用程序角色 r_p_test, 密码 123456
EXEC sp_addapprole 'r_p_test','123456'
--授予角色 r_p_test 对 T1 表的 SELECT 权限
GRANT SELECT ON T1 TO r_p_test ---------到此很正常,以上各步没问题。我激活这个应用程序角色r_p_test后,想让它能执行备份和恢复数据库,如何授权呢?
EXEC sp_addlogin 'L_test','123','mydb' --为登录 L_test 在数据库mydb 中添加安全账户 u_test
EXEC sp_grantdbaccess 'L_test','u_test'--创建一个应用程序角色 r_p_test, 密码 123456
EXEC sp_addapprole 'r_p_test','123456'
--授予角色 r_p_test 对 T1 表的 SELECT 权限
GRANT SELECT ON T1 TO r_p_test ---------到此很正常,以上各步没问题。我激活这个应用程序角色r_p_test后,想让它能执行备份和恢复数据库,如何授权呢?
你的服务器role → sysadmin
和数据库下面的role → db_owner 、db_backupoperator
这是两个级别
GRANT BACKUP DATABASE TO [L_test]
GO
可授予他备份权限
SQL 2000中Grant的用法
我用EXEC sp_addrolemember 'db_owner','r_p_test' 都不行,用sysadmin也不行。
--1.db_accessadmin:添加删除Windows登录名、windows组和SQL SERVER 登录名
--2.db_backupoperator:备份数据库权利
--3.db_datereader:读取用户表
--4.db_datawriter:写用户表
--5.db_ddladmin:执行DDL语句
--6.db_denydatareader:无法读取用户表
--7.db_denydatawriter:无法写数据库中的表
--8.db_owner:可以在数据库中执行任何操作。
--9.db_securityadmin:管理数据库和角色成员--添加用户
CREATE USER LIUQ FOR LOGIN LIUQ--将用户添加到角色
EXEC sp_addrolemember 'db_backupoperator','liuq'
--删除艰涩
EXEC sp_droprolemember 'db_backupoperator','liuq'
GRANT:http://msdn.microsoft.com/en-us/library/aa258909(v=sql.80).aspxSAMPLE:
http://msdn.microsoft.com/en-us/library/aa905193(v=sql.80).aspx#Example
As an example of application role usage, a user Sue runs a sales application that requires SELECT, UPDATE, and INSERT permissions on the Products and Orders tables in database Sales to work, but she should not have any SELECT, INSERT, or UPDATE permissions when accessing the Products or Orders tables using SQL Query Analyzer or any other tool. To ensure this, create one user-database role that denies SELECT, INSERT, or UPDATE permissions on the Products and Orders tables, and add Sue as a member of that database role. Then create an application role in the Sales database with SELECT, INSERT, and UPDATE permissions on the Products and Orders tables. When the application runs, it provides the password to activate the application role by using sp_setapprole, and gains the permissions to access the Products and Orders tables. If Sue tries to log in to an instance of SQL Server using any tool except the application, she will not be able to access the Products or Orders tables.
我E文较菜,能否直接回答,谢谢。
DENY ALTER DATABASE TO <login-name>
1> backup database MYDB to disk='D:\MYDB.bak' with init,format; --> 默认无权备份.
2> go
訊息 262, 層級 14, 狀態 1, 伺服器 VMSQL, 行 1
於資料庫 'MYDB' 中,BACKUP DATABASE 的權限遭拒。
訊息 3013, 層級 16, 狀態 1, 伺服器 VMSQL, 行 1
BACKUP DATABASE 異常中止中。
1> sp_setapprole 'r_p_test','123456'; --> 使用密码验证/启用角色.
2> go
應用程式角色 'r_p_test' 目前為作用中。
1> backup database MYDB to disk='D:\MYDB.bak' with init,format; --> 备份正常.
2> go
為資料庫 'MYDB',檔案 'MYDB' 於檔案 1 處理了 96 頁。
為資料庫 'MYDB',檔案 'MYDB_log' 於檔案 1 處理了 1 頁。
BACKUP DATABASE 成功地處理了 97 頁花費 0.197 秒 (4.002 MB/秒)。
DENY CREATE DATABASE TO l_test 不要用应用程序角色了,这样也可以满足你的安全要求