传奇3服务端Ei_Server连接数据库失败或无限尝试连接

来源: 作者: 点击:
在架设传奇3服务端(特别是基于王者或EI引擎的版本)时,Ei_20061128(通常指代EiServer.exe或相关核心组件)卡在“正在尝试连接数据库”或“连接超时”是极高频的故障。这通常意味着游戏主程序无法与SQL Server数据库建立握手。造成这一现象的原因主要集中在数据库服务未启动、ODBC数据源配置错误、账号密码不匹配以及网络协议设置不当四个方面。以下是针对该问题的详细排查与修复方案。

确认SQL Server服务状态

最基础但也最容易被忽视的原因,是数据库软件本身没有运行。传奇3服务端依赖Microsoft SQL Server(通常是2000或2005版本)来存储账号和角色数据。

请打开电脑的“服务”管理器(右键“我的电脑”->“管理”->“服务和应用程序”->“服务”),在列表中寻找MSSQLSERVER或SQL Server相关项。检查其状态是否为“已启动”。如果该服务处于停止状态,Ei_Server自然无法连接。右键点击选择“启动”,并建议将其启动类型设置为“自动”,以防重启电脑后再次失效。如果服务启动后立即停止,说明SQL Server安装本身存在问题,可能需要重新安装数据库软件。

校验ODBC数据源配置

传奇3的Ei_Server通常通过ODBC(开放数据库连接)接口来访问数据库。如果数据源名称(DSN)配置错误或丢失,连接就会失败。

进入控制面板,找到“管理工具”中的“数据源(ODBC)”。在“系统DSN”选项卡下,检查是否存在服务端要求的数据库连接名称(常见的如account、game1、manage等,具体需查看您服务端ConDB.ini或DB.ini中的配置)。

选中对应的数据源点击“配置”,重点检查以下几项:
服务器:必须填写(local)或127.0.0.1,代表本地数据库。
验证方式:必须选择“使用用户输入登录ID和密码的SQL Server验证”。
登录ID:通常为sa。
密码:必须与您安装SQL Server时设置的sa密码完全一致。如果密码为空,这里也必须留空。
默认数据库:确保下拉菜单中选中了正确的数据库(如account)。

点击“测试连接”按钮,如果提示“测试成功”,说明ODBC配置无误;如果报错,请根据错误提示修正密码或服务器名称。

检查数据库账号权限与密码同步

很多时候,ODBC配置看似正确,但依然连不上,是因为配置文件中的密码与实际数据库密码不匹配。

打开服务端目录下的ConDB.ini(或DB.ini、!setup.txt),查看其中的DBPassword或Password字段。确保这里填写的密码与您刚才在ODBC配置中填写的sa密码完全一致。

此外,部分版本需要在数据库内部修改权限。打开SQL Server的“查询分析器”,登录account数据库,查询TBL_PUBIPS或TBL_SERVERINFO表。确保表中的IP地址字段被设置为127.0.0.1。如果表中记录的是外网IP或局域网IP,而您是在单机环境下运行,可能会导致验证失败。可以使用SQL语句update TBL_PUBIPS set FLD_IP='127.0.0.1'进行修正。

调整SQL Server网络库设置

SQL Server 2000等老版本数据库默认可能未开启TCP/IP协议,或者端口被限制,导致本地连接也被拦截。

运行SQL Server的“服务器网络实用工具”(通常在开始菜单的SQL Server程序组中)。确保“TCP/IP”协议已被启用,并且端口号设置为默认的1433。同时,检查“命名管道”是否启用,建议将“命名管道”置于协议顺序的首位,因为本地连接通过命名管道通常更稳定。修改后需重启SQL Server服务才能生效。

处理数据库文件缺失或损坏

如果上述配置均无误,但依然提示连接失败,可能是数据库文件本身损坏或未正确还原。

检查服务端DB或Data目录下是否存在.mdf和.ldf文件(如account.mdf)。如果这些文件缺失,SQL Server虽然启动了,但里面是空的,没有任何数据表,连接自然会报错。您需要使用SQL Server的“企业管理器”,右键点击“数据库”->“所有任务”->“还原数据库”,将服务端备份目录(通常是.bak文件)中的数据还原到对应的数据库中。还原完成后,再次尝试启动Ei_Server。

排除端口占用与防火墙干扰

虽然是在本地连接,但防火墙仍可能拦截SQL Server的端口(1433)。

建议暂时关闭Windows防火墙及所有杀毒软件。同时,使用命令提示符输入netstat -ano | findstr 1433,查看1433端口是否处于LISTENING状态。如果没有,说明SQL Server没有正常监听端口,请回到第三步检查网络库设置。如果端口被其他程序占用,则需要更改SQL Server的监听端口,并同步修改ODBC配置中的端口设置。