大家好!1我想探讨一下,我的程序要连接sql server 2005数据库服务器,完成对某个数据库中所有表的数据读写操作 我创建了登录名,在进行用户映射的时候,选择哪个数据库角色比较合适??2.创建了登录名后,能完成创建和删除数据库的最安全的角色是哪个???如何设置???希望大家不吝赐教!

解决方案 »

  1.   

    http://blog.csdn.net/htl258/archive/2009/04/04/4045104.aspx参考:
      

  2.   

    安全问题 
    1.在确定不需要的情况下,删除xp_cmdshell,xp_dirtree,xp_regread,xp_regdeletekey,xp_regdeletevalue,xp_regwrite,sp_oacreate,sp_oadestroy,sp_oagetErrorInfo,sp_oagetProperty,sp_oamethod,sp_oasetProperty,sp_oastop这些存储过程,移走相关的动态连接库文件,在需要的时候复制到原来的位置就可以了。
    2.应用程序和网站在与后台的Microsoft SQLServer数据库连接时不要用SA等高权限的用户连接。
    3.给SA等高权限的用户起一个健壮的密码。
      

  3.   


    只是插入和修改数据用"public"吧,打开企业管理器,选择登录名,右键,属性,钩选服务器角色。
      

  4.   

    sysadmin 可以在 SQL Server 中执行任何活动。 
    serveradmin 可以设置服务器范围的配置选项,关闭服务器。 
    setupadmin 可以管理链接服务器和启动过程。 
    securityadmin 可以管理登录和 CREATE DATABASE 权限,还可以读取错误日志和更改密码。 
    processadmin 可以管理在 SQL Server 中运行的进程。 
    dbcreator 可以创建、更改和除去数据库。 
    diskadmin 可以管理磁盘文件。 
    bulkadmin 可以执行 BULK INSERT 语句。数据库角色
    db_owner 在数据库中有全部权限。 
    db_accessadmin 可以添加或删除用户 ID。 
    db_securityadmin 可以管理全部权限、对象所有权、角色和角色成员资格。 
    db_ddladmin 可以发出 ALL DDL,但不能发出 GRANT、REVOKE 或 DENY 语句。 
    db_backupoperator 可以发出 DBCC、CHECKPOINT 和 BACKUP 语句。 
    db_datareader 可以选择数据库内任何用户表中的所有数据。 
    db_datawriter 可以更改数据库内任何用户表中的所有数据。 
    db_denydatareader 不能选择数据库内任何用户表中的任何数据。 
    db_denydatawriter 不能更改数据库内任何用户表中的任何数据。
    请大家帮忙解释一下这些服务器和数据库角色, 书本上的中文解释,比较生涩难懂。
      

  5.   

    创建角色,用户,权限/*--示例说明
            示例在数据库pubs中创建一个拥有表jobs的所有权限、拥有表titles的SELECT权限的角色r_test
        随后创建了一个登录l_test,然后在数据库pubs中为登录l_test创建了用户账户u_test
        同时将用户账户u_test添加到角色r_test中,使其通过权限继承获取了与角色r_test一样的权限
        最后使用DENY语句拒绝了用户账户u_test对表titles的SELECT权限。
        经过这样的处理,使用l_test登录SQL Server实例后,它只具有表jobs的所有权限。
    --*/USE pubs--创建角色 r_test
    EXEC sp_addrole 'r_test'--授予 r_test 对 jobs 表的所有权限
    GRANT ALL ON jobs TO r_test
    --授予角色 r_test 对 titles 表的 SELECT 权限
    GRANT SELECT ON titles TO r_test--添加登录 l_test,设置密码为pwd,默认数据库为pubs
    EXEC sp_addlogin 'l_test','pwd','pubs'--为登录 l_test 在数据库 pubs 中添加安全账户 u_test
    EXEC sp_grantdbaccess 'l_test','u_test'--添加 u_test 为角色 r_test 的成员
    EXEC sp_addrolemember 'r_test','u_test'--拒绝安全账户 u_test 对 titles 表的 SELECT 权限
    DENY SELECT ON titles TO u_test/*--完成上述步骤后,用 l_test 登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色 r_test 有titles表的select权限,但已经在安全账户中明确拒绝了对titles的select权限,所以l_test无titles表的select权限--*/--从数据库 pubs 中删除安全账户
    EXEC sp_revokedbaccess 'u_test'--删除登录 l_test
    EXEC sp_droplogin 'l_test'--删除角色 r_test
    EXEC sp_droprole 'r_test'