如何在两台SQL Server服务器之间复制登录名和密码

库亚迪是用友软件天津市宝坻区服务商,所以经常会帮助客户处理各种财务软件间数据格式转换的工作,经常用到的一个工具是用友公司提供的【导爷】,导爷数据转换工具会使用SQL Server作为数据处理平台,初始化时会创建一个“ufosyuser"的数据库登录名,不知道为什么在新电脑上SQL Server Profile跟踪也有执行sp_addlogin,但是数据库中却没有创建成功,而该用户的密码又是在初始化工具中写死的,因为有一个成功初始化的旧数据库,所以偿试能否将用户名与密码复制到新数据库中,在尝试了很多方法均失败后,从国外一个网站看到一个方法可行,所以记录下来可能会帮到需要的朋友。

库亚迪是用友软件天津市宝坻区服务商,所以经常会帮助客户处理各种财务软件间数据格式转换的工作,经常用到的一个工具是用友公司提供的【导爷】,导爷数据转换工具会使用SQL Server作为数据处理平台,初始化时会创建一个“ufosyuser"的数据库登录名,不知道为什么在新电脑上SQL Server Profile跟踪也有执行sp_addlogin,但是数据库中却没有创建成功,而该用户的密码又是在初始化工具中写死的,因为有一个成功初始化的旧数据库,所以偿试能否将用户名与密码复制到新数据库中,在尝试了很多方法均失败后,从国外一个网站看到一个方法可行,所以记录下来可能会帮到需要的朋友。

微软官方指导方法,因为密码没有导出来,所以无效
微软官方指导方法,因为密码没有导出来,所以无效

新机器用PowerShell调用sp_addlogin创建用户也是成功的,但是不知道为什么该初始化工具却不能成功创建登录名,而且Profiles也可以跟踪到已经在数据库端执行,这次真的是碰到疑难杂症了。

因为涉及到公司机密,所以下面的过程不会采用真实数据。

执行上图的方法后,会得到如下脚本:

USE [master] GO
/* For security reasons the login is created disabled and with a random password. */
CREATE LOGIN [ufosyuser] WITH PASSWORD=N'8ic8fZq1PEbEbG3qyaQpn1ih/IrJeBW0MzcKU0KDQVI=', 
DEFAULT_DATABASE=[master], 
DEFAULT_LANGUAGE=[简体中文], 
CHECK_EXPIRATION=OFF, 
CHECK_POLICY=OFF
GO
ALTER LOGIN [testlogin] DISABLE
GO

注意上面脚本中的注释内容:因为安全原因登录名创建为禁用,而且密码是一个随机数。

下面的方法亲测可行:

第1步在已经初始化成功的旧数据库中执行以下代码:

/*SUSER_SID() - Returns the SID of the current security context*/
USE [master]
SELECT SUSER_SID('ufosyuser')
GO

/*This is the SID value in varbinary for login testlogin
0xE7F3C36B478F5A4A96F179210CFF39C5 */


/*LOGINPROPERTY('ufosyuser','PASSWORDHASH') - Returns the hash of the password*/
USE [master]
SELECT LOGINPROPERTY('ufosyuser','PASSWORDHASH')
GO

/*This is the password hash for login testlogin
0x020019814E12C5DCBE7D55C803E46D9CD7E349C9F9000BC392759E0CFD0CF98AA5A3D88B1A725F660A82FE7CAEAECA34E49AC5F08C188F5EF5DB99B06EC1E290EBFF4DF10EF1 */

第2步在新数据库中执行以下代码:

CREATE LOGIN [ufosyuser] WITH PASSWORD = 0x020019814E12C5DCBE7D55C803E46D9CD7E349C9F9000BC392759E0CFD0CF98AA5A3D88B1A725F660A82FE7CAEAECA34E49AC5F08C188F5EF5DB99B06EC1E290EBFF4DF10EF1 HASHED, 
SID = 0xE7F3C36B478F5A4A96F179210CFF39C5, 
DEFAULT_DATABASE = [master],
DEFAULT_LANGUAGE=[简体中文], 
CHECK_EXPIRATION = ON, 
CHECK_POLICY = ON

第3步将工具中初始化时附加的2个数据库复制到新服务器上,加载到新数据库中,然后打开”导爷数据转换工具“后,成功登陆,试着转换了几个数据文件,成功,Bingo!!!

测试环境特别说明:

  1. 旧机器是Windows 2008 Datacenter,数据库 SQL Server 2008 R2 SP3;
  2. 新机器是Windows 2019 Datacenter,数据库 SQL Server 2008 R2 SP3;
  3. 新机器在SQL Server 2008 R2 SP2中也不能初始化成功。
库亚迪(天津)信息技术有限公司是宝坻财务软件专业服务商,核心服务顾问拥有20年企业管理、财务、ERP软件顾问、软件开发工作经验,已经为宝坻区数十家用友客户提供企业管理软件服务,同时可为客户提供疑难技术问题诊断服务,如数据库异常以及软件使用中长期未解决技术问题等……
如果您有任何问题,欢迎来电:189-2011-6250(韩工)