SQL将登录映射到现有用户
我最近将我的开发环境从SQL 2000升级到SQL 2008 R2.我已经完成了我们的生产数据库的备份,并将其恢复为我们的新的开发服务器.
我已经在开发服务器上创建了一个登录名,这个镜像映射了我在生产服务器上使用的登录,但是我无法将其映射到数据库中的“dbo”用户.当我在“用户映射”中编辑登录的属性时,我用’dbo’替换用户,并且我收到以下错误:
那么如何将登录映射到现有用户? 解决方法要使用户与登录进行协调,可以使用系统存储过程sp_change_users_login.sp_change_users_login [ @Action = ] 'action' [,[ @UserNamePattern = ] 'user' ] [,[ @LoginName = ] 'login' ] [,[ @Password = ] 'password' ]; 例如: EXEC sp_change_users_login’Update_One’,’User123′,’User123′ 如果您有很多用户不同步,可以使用光标拉出所有用户并为其运行此命令.对不是不同步的用户运行此操作没有任何不利影响,它会修复所有的孤立用户. DECLARE @sql NVARCHAR(MAX); DECLARE curSQL CURSOR FOR SELECT 'EXEC sp_change_users_login ''UPDATE_ONE'',''' + name + ''',''' + name + '''' FROM sysusers WHERE issqluser = 1 AND name NOT IN ( 'guest','dbo','sys','INFORMATION_SCHEMA' ) OPEN curSQL FETCH curSQL INTO @sql WHILE @@FETCH_STATUS = 0 BEGIN EXEC ( @sql ) FETCH curSQL INTO @sql END CLOSE curSQL DEALLOCATE curSQL 这必须运行您需要用户修复的数据库的上下文. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |