我想创建一个数据库和用户的集合,以便每个用户只能访问一个数据库。
SO 问题“SQL Server 中用户和登录名之间的区别”讨论了登录名和用户。
我从中了解到,通常登录名用于服务器,而用户用于数据库。但是,我不明白这是如何工作的,因为密码是为登录名设置的,而不是为用户设置的。
这是否意味着我需要为每个数据库使用不同的登录名,或者是否有办法通过单个登录名与多个用户一起使用,每个用户都有自己的密码?
我想在 SQL 中执行此操作,而不是在 GUI 界面中,因为我需要编写脚本。
我想创建一个数据库和用户的集合,以便每个用户只能访问一个数据库。
SO 问题“SQL Server 中用户和登录名之间的区别”讨论了登录名和用户。
我从中了解到,通常登录名用于服务器,而用户用于数据库。但是,我不明白这是如何工作的,因为密码是为登录名设置的,而不是为用户设置的。
这是否意味着我需要为每个数据库使用不同的登录名,或者是否有办法通过单个登录名与多个用户一起使用,每个用户都有自己的密码?
我想在 SQL 中执行此操作,而不是在 GUI 界面中,因为我需要编写脚本。
这听起来像是包含数据库的一个案例。
在服务器级别设置遏制支持:
在数据库级别设置部分包含(请注意,这需要排他锁,因此可能需要单个用户,并且如果数据库位于 AG 中,则效果会不太好):
在该数据库中创建一个仅具有密码的用户并授予他们适当的权限,例如:
请注意该页面上提到的限制以及对其他功能的影响。
如果您使用 SQL 登录,那么每个人都需要自己的登录名,是的,然后需要在需要访问的相应数据库中创建
LOGIN
自己的登录名。举一个过于简单的例子:USER
如果您使用的是包含数据库,则可以“跳过”
LOGIN
创建过程,而是创建一个USER
带有密码的数据库。但是,对 SQL Server 进行身份验证的人需要确保在进行身份验证时指定他们想要连接的数据库,因为不这样做会导致连接错误。但请注意,包含数据库的工作方式与非包含数据库略有不同;人们似乎“忘记”的最大事情是,此类数据库中不允许跨数据库查询。使用先前简化的示例: