Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何授予用户对SQL Server中数据库的读取权限?_Sql_Sql Server_Security_Tsql_Ssms - Fatal编程技术网

如何授予用户对SQL Server中数据库的读取权限?

如何授予用户对SQL Server中数据库的读取权限?,sql,sql-server,security,tsql,ssms,Sql,Sql Server,Security,Tsql,Ssms,我想授予用户对具有读写权限的特定数据库的访问权限。该用户已在域中可用,但在数据库中不可用 那么,我如何通过创建新用户和密码来授予他们访问权限 有人告诉我,只需指定用户、域和要授予用户访问权限的数据库,而无需创建新用户和密码,就可以完成此操作 这是我执行的旧方法。它可以工作,但会创建新的登录名和用户,而不是使用域中可用的登录名和用户: use DBName; create login a_2 with password='Aa123'; create user a_2 for login a_2;

我想授予用户对具有读写权限的特定数据库的访问权限。该用户已在域中可用,但在数据库中不可用

那么,我如何通过创建新用户和密码来授予他们访问权限

有人告诉我,只需指定用户、域和要授予用户访问权限的数据库,而无需创建新用户和密码,就可以完成此操作

这是我执行的旧方法。它可以工作,但会创建新的登录名和用户,而不是使用域中可用的登录名和用户:

use DBName;
create login a_2 with password='Aa123';
create user a_2 for login a_2;
grant insert to a_2;
grant select to a_2;

这是一个分为两步的过程:

  • 您需要根据该用户的Windows帐户为其创建登录到SQL Server的

    CREATE LOGIN [<domainName>\<loginName>] FROM WINDOWS;
    
  • 一旦您的数据库中有了该用户,您就可以为其授予所需的任何权限,例如,您可以为其分配
    db_datareader
    数据库角色以读取所有表

    USE (your database)
    EXEC sp_addrolemember 'db_datareader', '(your user name)'
    

    不幸的是,我无法基于windows帐户创建登录名。因为,用户的帐户仅在域上可用,而在windows帐户上不可用。。。所以,当我使用“来自windows”时,它说-->“未找到windows NT用户或组'aa.us\bb'。请再次检查名称。“!!!它看不见它。。。那么,有没有办法让它在域中而不是在windows帐户中查看??注意:别担心,我自己写域名(登录名;)非常感谢;)别介意“马克”。。。我解决了这个问题。。。我发现我把域名写错了,现在它可以工作了:)非常感谢;)当我忘记“创建登录用户”时,我总是在这里结束!!;)+1
    USE (your database)
    EXEC sp_addrolemember 'db_datareader', '(your user name)'