我想创建SQL登录和用户,用户映射到登录。然后我的数据库归login所有。但是我得到这个错误:
"建议的新数据库所有者映射为此数据库中的用户"
事实上,我想要使用公共服务器角色登录,并将用户映射到该登录以限制对我的数据库的访问。我该怎么做呢?
正如您所发现的,每个登录只能映射到给定数据库中的一个用户(非正式地,可以认为在sys.database_principals中的sid列上存在唯一性约束)。要查找您的登录映射到哪个登录,请尝试以下操作:
select d.name as [UserName]
from sys.database_principals as d
join sys.server_principals as s
on d.sid = s.sid
where s.name = '<your login name here>';
我怀疑在您的特殊情况下,用户名将返回为'dbo'。无论如何,此时您有两个选项:
- 用
alter user [<username from above>] with login = [<new user name>]
修改用户名
在第1例中,您正在更改数据库中哪个登录映射到该特定用户。如果使用dbo用户执行此操作,请记住,该登录现在将失去它拥有的所有权限。因此,如果应用程序依赖于登录,请记住这一点。
在#2的情况下,也许一切都是应该的。在这种情况下,没有什么可做的
我在MS SQL Server 2012中创建新数据库时遇到了同样的问题。
问题是,我分配给新数据库的用户已经被编程为分配给要创建的每个新数据库。
所以当我尝试将用户再次分配给新数据库时,这是一个重复的操作。
我所要做的就是取消操作并创建一个新的数据库,而不指定用户,这工作得很好。
。
希望这对你有帮助