Ei_20061128是传奇3服务端的专属数据库校验与连接进程,负责读取角色存档、道具数据和账号信息。该进程启动后持续显示“正在尝试连接数据库”并卡住,说明引擎与数据库之间的通信链路完全中断。这种故障不弹出任何错误提示,只会循环重试连接,按照以下顺序逐层排查可以定位到具体环节。
先确认SQL Server服务运行状态。打开控制面板进入管理工具,找到服务列表中的SQL Server服务项。服务名可能是MSSQLSERVER或MSSQL$SQLEXPRESS,状态必须显示为已启动。如果服务处于停止或暂停状态,右键点击启动,等待三十秒让数据库完成初始化后再启动Ei进程。部分系统环境下数据库后台进程会静默异常,看似运行实则未响应外部连接请求,需要在任务管理器中结束所有数据库相关进程后重新加载。
SQL Server身份验证模式是最核心的排查点。传奇3的2006版EI引擎通过SQL Server身份验证连接数据库,而SQL Server安装后默认可能仅启用Windows身份验证模式,此时EI尝试用sa账号登录会被拒绝,日志中表现为“用户'(null)'登录失败,原因:未与信任SQL Server连接相关联”。打开SQL Server Management Studio或企业管理器,右键服务器实例选择属性,进入安全性页面,将身份验证模式改为“SQL Server和Windows身份验证模式”,确定后系统提示重启SQL Server服务,点击是使配置生效。如果SSMS本身因仅Windows模式无法登录,可通过注册表修改:定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer,将右侧LoginMode的值从1改为2,重启SQL服务即可。
sa账号的启用和密码设置需要同步检查。在SSMS中展开安全性文件夹下的登录名,右键sa选择属性,首先在状态页面确认登录状态为已启用。然后在常规页面设置密码,取消勾选“强制实施密码策略”和“强制密码过期”两个选项,避免密码策略导致连接被拒绝。如果使用的是SQL Server 2005及以上版本,还可以通过查询分析器执行ALTER LOGIN sa ENABLE命令来启用账号。sa密码设置完成后,需要确保服务端配置文件中填写的密码与之一字不差,包括大小写和前后空格。
EI_20061128的连接配置与常规M2引擎不同。老版本EI引擎使用ADO通过SQLOLEDB.1协议直连数据库,而非走ODBC桥接。打开服务端目录下的!setup.txt或Config.ini文件,找到[SQL]配置段落,按以下格式填写:Provider=SQLOLEDB.1,DataSource填写(local)或具体实例名(如MYPC\SQLEXPRESS),InitialCatalog填写数据库名称(常见为Account或MudDB),UserID填写sa,Password填写与SQL Server中设置完全一致的密码,PersistSecurityInfo设置为True。需要注意这个2006版引擎必须使用SQLOLEDB.1协议,如果配置中错误地使用了MSDASQL或ODBC桥接方式,同样会出现登录名为空'(null)'的报错。
ODBC系统数据源作为补充验证环节同样需要配置。进入控制面板的管理工具,打开数据源ODBC程序,切换到系统DSN标签页。点击添加按钮选择SQL Server驱动,数据源名称必须填写MudDB,这个名称需要与EI配置文件中的引用保持一致。服务器地址填写(local)或具体实例名,身份验证选择“使用SQL Server登录ID和密码”,登录ID填写sa,密码输入SQL Server安装时设置的准确密码并勾选记住密码。默认数据库选择Account或对应数据库名称,点击测试数据源确认显示测试成功。配置完成后ODBC管理器中的密码框可能显示为空,这是正常的,Windows ODBC管理器默认不在界面回显保存的SQL登录密码,真正参与连接的是EI配置文件中的参数。
SQL Server的TCP/IP协议需要确认已启用。打开SQL Server配置管理器,展开网络配置节点找到对应实例的协议设置,右键TCP/IP协议选择启用。如果已处于启用状态,双击打开属性设置,在IP地址选项卡中确认所有IP的TCP端口都设置为1433,已启用选项改为是。修改后必须重启SQL Server服务使设置生效。同时在Windows防火墙中放行1433端口,以管理员身份运行命令提示符,执行netsh advfirewall firewall add rule name="SQL" dir=in action=allow protocol=TCP localport=1433命令创建入站规则。
数据库文件的完整性直接影响EI引擎能否正常读取。确认SQL Server中已正确还原六个核心数据库:Account、Conlog、KingForEiserverBaseData、Game3g、Herocommon1、Manage。打开SQL企业管理器,右键数据库选择还原数据库,从服务端文件夹中找到对应的备份文件导入。每个数据库都需要完整还原,缺少任何一个都会导致EI进程连接失败。还原过程中如果提示路径错误,需要在还原选项中将文件路径修改为SQL Server安装目录下的Data文件夹路径。
服务端存放路径的编码问题容易被忽略。传奇3的EI引擎对文件路径的敏感度远高于常规传奇引擎,服务端解压到含有中文、空格或特殊符号的目录下,会造成数据库读取链路中断。将整个服务端文件夹移动到磁盘根目录,使用纯英文、无空格的文件夹名称,例如D:\Mir3Server。移动完成后重新在配置文件中更新所有数据库路径和资源读取路径,保证全局路径统一。
残留进程占用是导致连接卡死的隐性原因。上次架设关闭服务端不彻底时,Ei_20061128可能仍在后台驻留,持续占用数据库连接通道和端口。打开任务管理器,切换到详细信息页面,找到所有Ei_20061128、EiServer、DBServer以及数据库相关进程,全部手动结束。确认无任何残留程序后重启电脑,彻底释放端口和内存占用。重启后不再自动加载残留进程,重新按顺序启动服务端,EI进程可以正常完成数据库握手连接。
服务端启动顺序必须严格执行。正确的流程是:先启动SQL Server数据库服务,等待数据库完全就绪后启动DBServer.exe,观察窗口显示连接成功;接着启动LoginSrv.exe登录服务,确认端口监听正常;最后启动ei_20061128.exe主程序。每个程序都要右键选择以管理员身份运行,避免权限不足导致连接失败。启动过程中不要跳过任何一步,也不要提前启动主引擎程序。
杀毒软件和Windows防火墙可能静默拦截数据库端口。部分杀毒软件会默认拦截SQL Server的1433端口,即使关闭了主程序,后台防护进程仍然可能生效。排查时暂时关闭Windows防火墙和杀毒软件的实时防护,再次启动服务端测试。如果连接正常,则需要在杀毒软件的信任列表中添加整个服务端目录,同时在Windows防火墙中为sqlservr.exe和ei_20061128.exe添加入站规则。
端口占用冲突需要命令行验证。打开命令提示符执行netstat -ano | findstr :1433,检查1433端口是否处于LISTENING状态。如果没有返回结果,说明SQL Server根本没有绑定端口,需要回到SQL Server配置管理器确认TCP/IP协议是否真正启用。如果显示端口被其他程序占用,在任务管理器中按PID找到占用进程并结束。数据库通讯端口被占用会直接导致EI引擎无法握手连接,表现为持续重试无响应。
如果以上步骤全部完成后仍然无法连接,检查服务端目录下的注册表修复工具。部分一键端版本依赖于注册表中的特定键值,重装系统或更换服务端路径后,旧的注册表信息会导致新服务端无法识别数据库路径。运行服务端目录下“架设前必看”文件夹中的批处理文件,先执行清理注册表操作,再执行导入注册表操作,将当前服务端路径写入系统。这一步不能省略,否则网关程序启动后会找不到配置文件,虽然窗口打开了但实际上处于空转状态。
系统环境层面的兼容性也需要注意。如果服务端启动时报错提示缺少DLL文件,安装Visual C++运行库合集2005至2022全系列和.NET Framework 4.5.2以上版本。Windows 10和Windows 11系统下还需要确认系统时间格式为yyyy-MM-dd,部分老引擎的时间校验机制对格式敏感,非标准格式会触发脚本异常导致数据库连接中断。
传奇Ei_20061128连接数据库失败完整排查与修复步骤详解
来源:
作者:
点击:

