性能测试工具操作数据库(七)-Loadrunner与SQL Server

简介: Loadrunner与SQL Server的操作可以通过录制的方式来实现,但本文还是通过直接调用loadrunner本身的function来实现sql语句的操作,主要用到的是lr_db_connect和lr_db_executeSQLStatement两个函数,具体的用法这里不做解释,请自行查看loadrunner的帮助说明。
版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/68486247

Loadrunner与SQL Server的操作可以通过录制的方式来实现,但本文还是通过直接调用loadrunner本身的function来实现sql语句的操作,主要用到的是lr_db_connect和lr_db_executeSQLStatement两个函数,具体的用法这里不做解释,请自行查看loadrunner的帮助说明。

1、脚本协议:选择web service

在函数lr_db_connect的帮助说明中有句“Important: This function is available only from within Web Services scripts.”。这句话决定了,我们在协议选择的时候只能选择Web Services协议。

2、脚本

Action()
{
	int NumRows=0; 
	double times=0;
	int i=1;
	//建立连接,ConnectionType=SQL
	lr_db_connect("StepName=DatabaseConnection",
		"ConnectionString=Data Source=172.16.1.215;Initial Catalog=LayIM;Persist Security Info=True;User ID=sa;Password=sa",
		"ConnectionName=MyCon",
		"ConnectionType=SQL",
		LAST );
	/*建立连接,ConnectionType=OLEDB
    lr_db_connect("StepName=Connect", 
		"ConnectionString=Provider=SQLOLEDB;Data Source=.;Initial Catalog=my_test;User Id=sa;Password=123456",
		"ConnectionName=MyCon",
		"ConnectionType=OLEDB", //ConnectionType=SQL时,ConnectionString不可以带有Provider;ConnectionType=OLEDB时,必须带Provider
		LAST);
    */
	//执行SQL
	lr_start_transaction("SQL查询");
	NumRows = lr_db_executeSQLStatement("StepName=PerformQuery",
		"ConnectionName=MyCon",
		// 数据库语句
		"SQLStatement=SELECT * FROM layim_user ORDER BY id DESC ",
		"DatasetName=MyDataSet",
		LAST );
	times=lr_get_transaction_duration("SQL查询");
	lr_end_transaction("SQL查询", LR_AUTO);

	lr_output_message("The query returned %d rows.", NumRows);
	lr_output_message("SQL查询语句执行时间 %f ", times);
 
	//打印查询结果
	
	/*lr_db_dataset_action("StepName=PrintDataset",
	    "DatasetName=MyDataSet",
	    "Action=PRINT",
	    LAST );*/
 
	//获取当前第一条记录
	lr_db_getvalue("StepName=GetValue",
		"DatasetName=MyDataSet",
		"Column=nickname",
		"Row=current",
		"OutParam=MyOutputParam",
		LAST );
 
	// 输出当前查询记录
	lr_output_message("The value is: %s", lr_eval_string("{MyOutputParam}") );

	while (i<=10) {//输出10条记录
		lr_db_getvalue("StepName=GetValue",
					   "DatasetName=MyDataSet", 
					   "Column=nickname",
					   "Row=next", 
					   "OutParam=MyOutputParam",
					   LAST);
		lr_output_message("The value %d is: %s", i, lr_eval_string("{MyOutputParam}") ); 
		i=i+1;
	}
	lr_output_message("The query returned %d rows.", NumRows); 
	
	//释放结果
    /*lr_db_dataset_action("StepName=RemoveDataset",
        "DatasetName=MyDataSet",
        "Action=REMOVE",
        LAST);*/

	lr_start_transaction("SQL插入");
	NumRows = lr_db_executeSQLStatement("StepName=Insert",
		"ConnectionName=MyCon",
		// Insert语句,本例中第一列id是自增主键
		"SQLStatement=Insert into layim_user values ('test','123456','test888888','','/test/test',getdate(),'111111',0) ",
		"DatasetName=MyDataSet",
		LAST );
	times=lr_get_transaction_duration("SQL插入");
	lr_end_transaction("SQL插入", LR_AUTO);

    lr_output_message("The insert date %d rows.", NumRows);
	lr_output_message("SQL插入语句执行时间 %f ", times);
 
	//关闭链接
	lr_db_disconnect("stepname=Disconnect","connectionname=MyCon",LAST);
 
	return 0;
}

3、补充说明:

(1)ConnectionString:本文给了ConnectionType为sql和OLEDB的例子,具体数据源的连接可参见:https://www.connectionstrings.com/sql-server/

(2)ConnectionType=OLEDB时ConnectionString后面必须指定Provider属性,ConnectionType=SQL又绝对不可以指定Provider属性。不知道为什么这么要求。

(3)lr_db_connect中的ConnectionName可以随意指定,但是lr_db_executeSQLStatement中的ConnectionName必须和其保持一致。

目录
相关文章
|
7月前
|
SQL 机器学习/深度学习 人工智能
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
本文系统性地阐述了自然语言转SQL(NL2SQL) 技术如何让非技术背景的业务分析师实现数据自助查询,从而提升数据驱动决策的效率与准确性。
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
|
8月前
|
数据可视化 BI API
无缝对接云数据库:自定义报表生成工具在混合云环境下的部署指南
自定义报表生成工具通过拖拽设计、多数据源整合及自动化输出,帮助业务人员零代码创建个性化报表,解决传统工具灵活性不足、技术门槛高的问题。文章对比其与传统报表差异,列举行业应用场景(如财务、零售),并给出选型建议与主流工具(如FineReport、Power BI、板栗看板)的优劣势分析。
294 0
|
6月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
560 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
5月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
317 6
|
7月前
|
SQL 人工智能 Java
用 LangChain4j+Ollama 打造 Text-to-SQL AI Agent,数据库想问就问
本文介绍了如何利用AI技术简化SQL查询操作,让不懂技术的用户也能轻松从数据库中获取信息。通过本地部署PostgreSQL数据库和Ollama模型,结合Java代码,实现将自然语言问题自动转换为SQL查询,并将结果以易懂的方式呈现。整个流程简单直观,适合初学者动手实践,同时也展示了AI在数据查询中的潜力与局限。
811 8
|
7月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
1437 10
|
7月前
|
SQL 人工智能 Linux
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
348 5
|
6月前
|
人工智能 数据库 iOS开发
DBeaver Ultimate Edtion 25.2 发布 - 通用数据库工具
DBeaver Ultimate Edtion 25.2 Multilingual (macOS, Linux, Windows) - 通用数据库工具
615 0
|
8月前
|
SQL 缓存 监控
SqlRest让SQL秒变Http API,还支持20+数据库(含国产数据库)
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
8月前
|
SQL 存储 数据库
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
1229 0