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后,想让它能执行备份和恢复数据库,如何授权呢?

解决方案 »

  1.   

    wxf163:  我用的是SQL2000,没有这个角色?能说详细点吗?
      

  2.   

    仔细找找 
    你的服务器role → sysadmin 
    和数据库下面的role → db_owner 、db_backupoperator 
    这是两个级别
      

  3.   


    GRANT BACKUP DATABASE TO [L_test]
    GO
    可授予他备份权限
      

  4.   

    http://zhidao.baidu.com/question/24129590.html
    SQL 2000中Grant的用法
      

  5.   

    qianjin036a:我不能授予L_test这样大的权利,不然,创建应用程序角色就失去意义了。我现在的目的是,授予登录最小的权利,然后授予应用程序角色适当的权力,它在使用时被激活,程序运行完就消失。这样,对数据库安全性有利。现在的问题是,我怎么无法授予应用程序角色这个权限呢?
    我用EXEC sp_addrolemember 'db_owner','r_p_test' 都不行,用sysadmin也不行。
      

  6.   

    --数据库角色
    --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'
      

  7.   

    GRANT BACKUP DATABASE TO r_p_test
    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.
      

  8.   

    cjzm83:用GRANT BACKUP DATABASE TO r_p_test后,可以备份数据库了,但是,不能恢复数据库。如果才能具有恢复数据库的权限呢?
      

  9.   

    http://www.bigresource.com/Tracker/Track-ms_sql-hdVY8qUP/
      

  10.   

    cjzm83:
    我E文较菜,能否直接回答,谢谢。
      

  11.   

    还原数据库的权限只能在实例级别上通过 sysadmin 或 dbcreator 固定服务器角色获取,需要将登陆帐户加入这两个角色,而不能授予数据库级别上的应用程序角色。
      

  12.   

    DENY CREATE DATABASE TO <login-name>
    DENY ALTER DATABASE TO <login-name>
      

  13.   

    测试过,11楼是正解,代码如下C:\>sqlcmd -S VMSQL -U L_test -P 123
    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/秒)。
      

  14.   

    大体意思:给 u_test 数据库角色 db_backupoperator, db_denydatareader, db_denydatawriter给 l_test 服务器角色 dbcreator最后执行
    DENY CREATE DATABASE TO l_test 不要用应用程序角色了,这样也可以满足你的安全要求