【问题标题】:What is the T-SQL To grant read and write access to tables in a database in SQL Server?什么是 T-SQL 授予对 SQL Server 中数据库中表的读写访问权限?
【发布时间】:2009-01-19 02:07:35
【问题描述】:

在 SQL Server 中为用户分配 db_datareaderdb_datawriter 角色的确切 SQL 是什么?

用户名为MYUSER,数据库为MYDB

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:

    在 SQL Server 2012、2014 中:

    USE mydb
    GO
    
    ALTER ROLE db_datareader ADD MEMBER MYUSER
    GO
    ALTER ROLE db_datawriter ADD MEMBER MYUSER
    GO
    

    在 SQL Server 2008 中:

    use mydb
    go
    
    exec sp_addrolemember db_datareader, MYUSER 
    go
    exec sp_addrolemember db_datawriter, MYUSER 
    go
    

    同时分配执行数据库所有存储过程的能力:

    GRANT EXECUTE TO MYUSER;
    

    分配执行特定存储过程的能力:

    GRANT EXECUTE ON dbo.sp_mystoredprocedure TO MYUSER;
    

    【讨论】:

      【解决方案2】:

      从 SQLServer 2012 开始更优雅alter role

      use mydb
      go
      
      ALTER ROLE db_datareader
        ADD MEMBER MYUSER 
      go
      ALTER ROLE db_datawriter
        ADD MEMBER MYUSER 
      go
      

      【讨论】:

        【解决方案3】:

        最好先创建一个新角色,然后授予该角色执行、选择...等权限,最后将用户分配给该角色。

        创建角色

        CREATE ROLE [db_SomeExecutor] 
        GO
        

        授予此角色的权限

        GRANT EXECUTE TO db_SomeExecutor
        GRANT INSERT  TO db_SomeExecutor
        

        添加用户数据库>安全>>角色>数据库角色>属性>添加(右下角)你可以搜索AD用户然后添加

           EXEC sp_addrolemember 'db_SomeExecutor', 'domainName\UserName'
        

        请参考post

        【讨论】:

          猜你喜欢
          • 2011-02-20
          • 1970-01-01
          • 2014-03-04
          • 2014-03-13
          • 1970-01-01
          • 2023-04-07
          • 2011-10-05
          • 2015-04-24
          • 2012-09-21
          相关资源
          最近更新 更多