Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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 2005 为什么从文件中还原用户后,需要将其删除,然后重新添加到SQL Server数据库中?_Sql Server 2005_Security_Login - Fatal编程技术网

Sql server 2005 为什么从文件中还原用户后,需要将其删除,然后重新添加到SQL Server数据库中?

Sql server 2005 为什么从文件中还原用户后,需要将其删除,然后重新添加到SQL Server数据库中?,sql-server-2005,security,login,Sql Server 2005,Security,Login,为什么从文件中还原用户后,需要将其删除,然后重新添加到SQL Server数据库中 如果不这样做,则在尝试从应用程序使用此用户名访问数据库时,会收到“用户登录失败”的消息。您必须这样做才能将数据库用户与服务器登录同步 SQL首先在服务器级别进行身份验证,然后在数据库级别进行身份验证。尽管数据库登录名可能与服务器登录名同名,但不能保证它们实际上是相同的登录名。(所有文件备份可能来自不同的服务器。) 通过在数据库级别删除并重新添加用户,您确认服务器登录名可以访问数据库。在还原后,SUID可能会更改。

为什么从文件中还原用户后,需要将其删除,然后重新添加到SQL Server数据库中


如果不这样做,则在尝试从应用程序使用此用户名访问数据库时,会收到“用户登录失败”的消息。

您必须这样做才能将数据库用户与服务器登录同步

SQL首先在服务器级别进行身份验证,然后在数据库级别进行身份验证。尽管数据库登录名可能与服务器登录名同名,但不能保证它们实际上是相同的登录名。(所有文件备份可能来自不同的服务器。)


通过在数据库级别删除并重新添加用户,您确认服务器登录名可以访问数据库。

在还原后,SUID可能会更改。阅读这篇文章,其中介绍了一些解决方案,如如何在数据库恢复时传输登录名和密码,以及如何解决用户权限问题。

我知道这是一个非常乏味的练习,但是我们没有任何选择来删除和添加数据库用户

这背后的原因是-每个SQL server实例都有自己的身份验证策略,这些策略针对用户、模式和角色进行绑定。当您尝试对数据库进行身份验证和访问时,如果您没有权限,则用户必须在实例的secutiry目录中拥有正确的条目身份验证失败

因此,当您尝试添加一个用户并将数据库分配给该用户时,它会失败,因为该用户已经在数据库的安全目录中。因此,首先需要从数据库的安全目录中删除该用户,然后通过SQL server实例的安全目录再次添加该用户,并将dataabse访问权分配给该用户