SQL Server 2008 R2版本的数据库迁移到SQL Server 2019版本上,通过这种方式完成数据库的升级。除了对数据进行迁移外,还要迁移用户,系统权限,对象权限,可能还有jobs.对象权限是在在各个数据库上的,随着数据库迁移。但是用户和一些系统权限不会随着业务的数据库进行迁移,因为用户是独立的,用户的信息是注册到系统数据库master库的。
所以,SQL Server的数据库迁移之后,包括对用户进行迁移之后,还需要单独对用户进行登录配置重置。比如下面这种情况,用户迁移之后,密码是原来的密码,但是无法登录,报了15128的错误。
##报错内容
TITLE: Microsoft SQL Server Management Studio
------------------------------
Alter failed for Login 'suxing'. (Microsoft.SqlServer.Smo)
For help, click: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.200.48044.0&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Alter+Login&LinkId=20476
------------------------------
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
The CHECK_POLICY and CHECK_EXPIRATION options cannot be turned OFF when MUST_CHANGE is ON. (Microsoft SQL Server, Error: 15128)
For help, click: https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-15128-database-engine-error
------------------------------
BUTTONS:
OK
------------------------------
##解决方法
USE MasterGOALTER LOGIN [suxing] WITH PASSWORD = 'Xxxxxxxx'GOALTER LOGIN [suxing] WITHCHECK_POLICY = O
就是相当重置用户的密码以及密码认证策略。
接着就是处理了上面的问题,用户尽管能够登录了,但是用户没有访问任何数据库的权限。那就是会报出以下15023的错误内容.
##报错内容
TITLE: Microsoft SQL Server Management Studio
------------------------------
Create failed for User 'suxing'. (Microsoft.SqlServer.Smo)
For help, click: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.200.48044.0&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Create+User&LinkId=20476
------------------------------
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
User, group, or role 'suxing' already exists in the current database. (Microsoft SQL Server, Error: 15023)
For help, click: https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-15023-database-engine-error
------------------------------
BUTTONS:
OK
------------------------------
##解决方法
USE {database_name}
EXEC sp_change_users_login 'Update_One', 'suxing', 'suxing'
这个就相对是设置用户与数据库的映射关系,给予用户访问某个数据库的权限。需要进入到各个数据库里执行,执行之后,用户就拥有了该数据库的访问权限,以及表等其他对象的访问权限。
以上的内容,希望能够对你有帮助。




