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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
性能测试 PTS,5000VUM额度
简介: 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必须和其保持一致。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
1月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
49 2
|
1月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
2月前
|
SQL 数据可视化 安全
微软SQL Server可视化工具与技巧
微软SQL Server不仅提供了强大的数据库管理功能,还集成了多种可视化工具,帮助用户更直观地理解和管理数据
|
3月前
|
关系型数据库 MySQL 测试技术
《性能测试》读书笔记_数据库优化
《性能测试》读书笔记_数据库优化
38 7
|
4月前
|
消息中间件 Kafka 测试技术
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
|
4月前
|
SQL 存储 监控
|
5月前
|
Oracle 关系型数据库 Java
实时计算 Flink版操作报错合集之cdc postgres数据库,当表行记录修改后报错,该如何修改
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
SQL 监控 关系型数据库
实时计算 Flink版操作报错合集之在设置监控PostgreSQL数据库时,将wal_level设置为logical,出现一些表更新和删除操作报错,怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
关系型数据库 Java 数据库
实时计算 Flink版操作报错合集之flinksql采PG数据库时报错,该如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。