Oracle SQL Developer、JMeter可连数据库,LoadRunner(Vugen)连接失败求助
问题场景
Oracle SQL Developer及JMeter均可正常连接目标SQL Server数据库,但使用LoadRunner Vugen回放脚本时出现以下连接错误:
"DB Connection failed {"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"}"
使用的LR连接代码:
lr_db_connect("StepName=DatabaseConnection", "ConnectionString=Data Source=XXXXXX;Initial Catalog=InvDatabase;Persist Security Info=True;User ID=XXXXX;Password=XXXXX", "ConnectionName=XXXXX", "ConnectionType=SQL", LAST );
排查及解决步骤
核对连接字符串数据源配置
确认Data Source的值与JMeter/Oracle SQL Developer中使用的完全一致:- 若为SQL Server命名实例,需采用
服务器名\实例名格式;若为默认实例,可直接使用服务器IP或主机名 - 若使用主机名,测试Vugen所在机器能否解析该名称,建议暂时替换为数据库服务器IP地址尝试
- 若数据库端口非默认1433,需明确指定为
IP地址,端口号格式
- 若为SQL Server命名实例,需采用
强制指定数据库驱动与连接协议
错误提示为Named Pipes驱动连接失败,可在连接字符串中强制使用TCP/IP协议及高版本ODBC驱动:
添加;Driver={ODBC Driver 17 for SQL Server};Network Library=DBMSSOCN参数,避免默认驱动兼容性问题验证网络连通性
- 在Vugen所在机器测试与数据库服务器的端口连通性,可使用
telnet 数据库IP 1433或PowerShell命令Test-NetConnection 数据库IP -Port 1433 - 检查本地防火墙、数据库服务器防火墙是否允许Vugen机器访问目标端口
- 在Vugen所在机器测试与数据库服务器的端口连通性,可使用
清理冗余连接参数
移除Persist Security Info=True参数,该参数可能引发不必要的权限验证问题;同时确认Initial Catalog、User ID、Password的拼写及正确性测试系统级ODBC连接
在Vugen所在机器创建ODBC数据源,使用相同的连接参数测试连通性。若ODBC连接失败,说明问题出在系统层面而非LoadRunner配置,需优先解决系统网络或驱动问题
修改后的示例代码
lr_db_connect("StepName=DatabaseConnection", "ConnectionString=Data Source=数据库IP,1433;Initial Catalog=InvDatabase;User ID=XXXXX;Password=XXXXX;Driver={ODBC Driver 17 for SQL Server};Network Library=DBMSSOCN", "ConnectionName=XXXXX", "ConnectionType=SQL", LAST );
内容的提问来源于stack exchange,提问作者Yasir

