当我们恢复使用以下命令创建的备份时,我们会在数据库级别获得所有安全设置,但不会创建引擎级别的用户。
osql -s myserver -E -Q " BACKUP DATABASE MyDB TO DISK = 'C:\SQLBackups\MyDB.bak'"
此用户在引擎级别的主要用途是用于外部连接目的(例如 IIS 应用程序)。
databaseName1 映射到用户 databaseUser1
我们想知道我们必须对原始数据库引擎进行哪些备份才能带来连接用户,以及他们所有的密码和映射。有任何想法吗?
数据库用户不同于 SQL Server 登录。数据库用户作为数据库的一部分被恢复,但数据库服务器登录不是。您遇到的问题通常称为孤立用户。
您有 2 个选项:
使用sp_change_users_login 'Report' 查看哪些用户是孤立的,然后使用 'auto_fix' 在数据库服务器上创建登录。每次还原数据库时都需要这样做。
使用sp_help_revlogin仅将孤立的登录复制到您已对其执行还原的数据库。这有点涉及,但如果它是一个您定期恢复的数据库,那么它值得付出努力,因为您只需执行一次。
恢复 master 不是一个真正的选择,除非您将所有数据库恢复到新服务器,否则它会变得一团糟!
要恢复登录,您还必须备份和恢复主数据库。如果您不想这样做,您可以使用sp_change_users_login为数据库中的孤立用户创建新登录名。
在 SQL 2005 中,MS 引入了 sp_help_revlogin。结果集是登录及其密码(散列)的脚本,非常适合移动登录(尤其是 SQL 登录)而无需移动 master。