情况描述:sql server数据库从一台机转移到另一台机时,登录名没转移。这种情况将会产生“孤立用户”(孤立用户定义:将数据库恢复到其它服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户),此时是不能通过新建登录或者对同名登录授予对应数据库用户权限来解决下面问题。
报错信息:用户、组或角色 'XX' 在当前数据库中已存在。(Microsoft SQL Server,错误:15023)
解决办法(下面以test数据库为例,登录名为ReadData):
use test
go
sp_change_users_login 'update_one','ReadData','ReadData'
说明:test为数据库名,update_one为存储过程的参数(表示只处理一个用户),前一个ReadData为“用户”,后一个ReadData为“登录”,(sql server中的“登录”与“用户”的区别,“登录”用于用户身份验证,而"用户"账户用于数据库访问和权限验证。登录通过安全识别符(SID) 与用户关联),以上这个sql语句使得用ReadData登录数据库并与test数据库的用户“ReadData”重新连接,这样用ReadData登录就可以正常操作数据库了。
标题: Microsoft SQL Server Management Studio
------------------------------
创建 对于 用户“gzlgsng”失败。 (Microsoft.SqlServer.Smo)
有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.5500.0+((Katmai_PCU_Main).110922-0336+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=创建+User&LinkId=20476
------------------------------
其他信息:
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)
------------------------------
用户、组或角色 'gzlgsng' 在当前数据库中已存在。 (Microsoft SQL Server,错误: 15023)
------------------------------
按钮:
确定
------------------------------