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

51
我想授予用户对特定数据库的读写访问权限。该用户已经存在于域中,但不在数据库中。
那么,我怎样才能给他们这种访问权限而不需要创建新的用户名和密码?
有人告诉我,只需指定您要向用户授予访问权限的用户、域和数据库即可完成此操作,无需创建新用户和密码。
以下是我正在实现的旧方式。它有效,但会创建一个新的登录和用户,而不是使用域中可用的用户:
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;
1个回答

122

这是一个两步骤的过程:

  1. 您需要基于用户的Windows账户为其创建一个SQL Server登录

    CREATE LOGIN [<domainName>\<loginName>] FROM WINDOWS;
    
  2. 你需要授予这个登录权限来访问数据库:

  3. USE (your database)
    CREATE USER (username) FOR LOGIN (your login name)
    
    一旦你在你的数据库中拥有了该用户,你可以赋予它任何想要的权限,例如你可以分配给它 db_datareader 数据库角色以便读取所有表。
    USE (your database)
    EXEC sp_addrolemember 'db_datareader', '(your user name)'
    

很遗憾,我无法基于Windows帐户创建登录。由于用户的帐户仅在域上可用,而不在Windows帐户上可用...因此,当我使用“from windows”时,它会显示-->“Windows NT用户或组'aa.us\bb'未找到。请再次检查名称。”!!! 它看不到它...那么,有没有办法让它查找域而不是Windows帐户??注意: 不用担心,我会写自己的域和登录名 ;)非常感谢;) - Q8Y
2
不用在意'marc_s'...我已经解决了这个问题...我发现我一直在错误地输入域名,现在它可以工作了:) 非常感谢;) - Q8Y
4
每当我忘记“为登录创建用户”时,我总是最终来到这里!! ;) +1 - Mitch Wheat
2
谢谢。为什么微软官方的10页文档中从未展示过这个例子? - Jurion
1
@Jurion 因为微软的文档就是最好的 - Jonathan E. Landrum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接