ADO.NET驱动程序(SDK 16.0 SP03 PL04)-WRITETEXT截断准备好的查询中使用的变量

2020-08-16 21:36发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 在 ADO.NET 中...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


ADO.NET 中使用准备好的查询语句,SDK 16.0 SP03 PL04中的驱动程序带有WRITETEXT截断变量 在准备好的查询中使用

相关:SAP KBA(2349625)

详细信息

在使用准备好的查询进行WRITETEXT操作时,如果要写入的内容作为准备好的查询变量传递给命令,并且其长度大于16384字节,则插入的内容仍将被截断

AseCommand命令=新的AseCommand(" WRITETEXT#dxp_spec_text_temp.text_data @rtfPointer @ p0");

command.Parameters.Add(新的AseParameter

{

值="长度大于16384字节/字符的内容",

方向= ParameterDirection.Input,

ParameterName =" @ p0"

});

command.ExecuteNonQuery(); //没有错误,数据会被驱动程序静默截断

解决方法

如果您将要写入的内容直接写入传递给AseCommand的查询字符串中,那么该内容就不会被截断。 但是,由于要使用常规的字符串联系操作将要插入的内容添加到查询中,因此 这会在客户端应用程序中创建SQL注入漏洞

string command =" WRITETEXT#dxp_spec_text_temp.text_data @rtfPointer'{0}'";

command = string.Format(command,"长度大于16384字节/字符的内容")

AseCommand命令=新的AseCommand(命令);

command.ExecuteNonQuery(); //成功,没有数据被截断

我们应该如何使用16.0 ADO将大格式的数据插入文本列而不会引起这种风险 .NET 驱动程序?

1条回答
me_for_i
2020-08-16 22:05

嗨,

尝试将TextSize添加到连接字符串。 导致截断的ASE的页面大小。

参考:

https://help.sap.com/查看器/54c3945e6dd14033889f875bed1323ce/16.0.3.8/en-US/b04d6739bbf91014aa378f4742e834b9.html

告诉我是否可以解决问题。

谢谢,
黎明K

一周热门 更多>