![]() |
1
1
经过长时间的分析,我终于发现了问题。 太长,读不下去了Powerbuilder错误。更准确地说,平台的巨大局限性。在数据库连接字符串中设置DisableBind=1 长答案: 在数据库连接字符串中,有一个名为 禁用绑定 将SQL语句中的变量绑定到其支持的数据类型。 Detailed information can be found in the documentation 无论如何,当disablebind设置为0时,程序提供的带有WHERE子句的所有SQL查询都将包装在sp_executesql中。不幸的是,Powerbuilder没有一种简洁的方法来确定是否将参数包装为VARCHAR或NVARCHAR,因此如果启用了Unicode选项,Powerbuilder在生成sp_executesql语句时默认为NVARCHAR。 一旦启用了disablebind选项,所有查询都将通过sp_executesql在本地执行,因此不会出现上述问题。不幸的是,对于我们的应用程序来说,启用此选项带来了一些突破性的更改,因此我们最终将数据库数据类型从varchar更改为nvarchar以解决此问题。这使我们的应用程序的性能提高了至少20%,在某些情况下超过70%。 希望这将帮助任何其他可能遇到这一晦涩问题的人。或者更好的是,不惜一切代价避免使用Powerbuilder。这就像癌症。我很高兴SAP正在慢慢扼杀它。 |
![]() |
Community wiki · SQL语法新手 1 年前 |
|
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |