为什么在SSMS中禁用使用登录将用户类型更改为SQL用户?

Min*_*iel 7 sql database security ssms sql-server-2008

我从SQL Server 2008备份了一个数据库,并使用SQL Server 2012将其恢复到我的本地计算机,现在我正在尝试使用复制的数据库用户帐户登录到服务器,但我无法这样做.

在谷歌搜索问题之后,我发现我必须将用户类型更改为SQL User Without Login,SQL User with Login但下拉列表已禁用,如下图所示,我该如何解决这个问题,这是做我需要的最好的方法完成或我需要将此用户添加到服务器级别?

在此输入图像描述

Ran*_*s1r 5

我记得之前在跨服务器进行备份/恢复时遇到过这种情况。基本上归结为 SQL Server 的工作方式。有 SQL Server 用户和数据库用户(作为数据库用户的 SQL Server 用户通过映射表示)。然而,它们不是一回事。

SQL Server 用户属于 SQL Server,数据库用户仅属于关联的数据库。当您有数据库用户但没有 SQL Server 用户时会发生什么?您无法登录到 SQL Server 非明显。

因此,我所做的是在移动数据库之后,我添加了我需要登录的用户,作为使用 SSMS 的 SQL Server 用户,删除旧的数据库用户(它有关联的依赖项,阻止映射到它)并最后创建一个新用户通过将我的 SQL 用户映射到具有适当权限的数据库来访问数据库。

这种方法绝不是优雅的,但它在 100% 的时间里都有效,不需要代码,如果你有自动备份/恢复,你应该考虑一个更持久的系统。一方面,这就是我一直这样做的方式。

  • 但是,如果我能把这个完整的循环……回到我对这个答案的第一个评论,我不会删除并重新创建数据库用户。保持原样,并将其与新的或现有的登录名相关联。 (2认同)