在SQL Server中重建用户映射

某些开发过程中,会有不能直接连接到生产环境的情况。如果情况不是太复杂,这时候一个比较方便的做法是:在自己机器上开发好。然后使用数据库的恢复/覆盖功能,用新版本的数据库替换生产环境下的数据库。

如果是SQL Server,可以先在开发环境中备份数据库为文件,再将文件传输到生产环境,调用“恢复”功能,选中“覆盖现有数据”和“关闭现有的数据库连接”选项,即可实现数据库的替换。

但是这种情况下,如果使用了用户映射功能,则数据库覆盖之后用户映射关系会丢失。如果是完全丢失也就罢了,重建一个就行。按实际的情况是,数据库引擎这头的用户已经没有了,而是数据库中这个用户仍然存在(从开发环境带过来的)。这时候如果按原来的名字去添加用户映射会,报错说“用户已经存在”。这个时候需要写命令重新把用户映射关系连接上,而非重建:

use [DataBaseName]
go
sp_change_users_login 'update_one', 'user_name_already_in_db','user_name_used_to_login'

注释:

  • DataBaseName:数据库名字,方括号也要写上;
  • update_one:表示只更新一个用户,具体看巨硬文档;
  • user_name_already_in_db:已经随着“恢复”行为带进来的用户名;
  • user_name_used_to_login:应用程序用来登录的那个名字,也就是出现在SQL Server管理器软件的“登录名”那里的用户名。
  • 最后更改: 2020/01/20 03:43