0

下午好,也许有人可以提供一些启示,或者至少为我指明方向,以弄清楚为什么 PowerBuilder 9 应用程序会导致在我们的 SQL 服务器数据库中打开 100 个数据库连接。

背景

我们的组织最近收购了另一家公司,该公司的主要应用程序是使用 PowerBuilder 9 构建的,该 PowerBuilder 9 位于 SQL Server 2008 R2 数据库之上。此应用程序的用户使用他们的域凭据登录数据库,他们大约有 15-20 个活跃用户。我们已经看到,在任何给定时刻,这 15-20 个用户可以在 SQL Server 数据库中运行 100 个连接/进程。

例子

例如,昨天有大约 530+/- 来自这些用户的数据库连接。对 sys.sysprocesses 表运行查询时,我可以看到所有连接的状态为“睡眠”,cmd 值为“AWAITING COMMAND”。

我们不确定这是否是由于开发人员未正确打开和关闭连接造成的,或者这对于 PowerBuilder 9 应用程序是否正常。

任何信息都会有所帮助和赞赏。提前致谢。

4

1 回答 1

0

您似乎想得到一个答案,表明 PowerBuilder 会本机地做一些非常愚蠢的事情。对不起,在这种情况下你不会得到它,我不认为。像任何工具一样,您可以让 PowerBuilder 应用程序做很多事情。如果PowerBuilder 的性质和基础架构驱使您选择一种架构,那么它就是一个单线程、单连接的应用程序。

可以使应用程序多线程,并从每个线程连接(线程不能共享连接),但是这方面的文档不强,而且方法很迟钝,所以不太可能。

可以让应用程序连接到数据库 1000 次,但这意味着超越内置的单个全局连接对象并实例化 1000 个新连接。这在如何做上比多线程更明显,但我不得不问为什么有人会这样编程?

这里有另一个想法:如果这个应用程序自 2003 年左右(PB9 的发布)就已经存在,为什么现在才出现呢?一个建议是,也许它与几年后出现的 DBMS 引擎相匹配?我知道有人成功地使用了带有更高版本 DBMS 引擎的 PowerBuilder 版本,但是很可能你偶然发现了一些不兼容的东西,这在 PB9 的开发时是不可预测的。

如果您的下一步不是很多追踪,试图弄清楚发生了什么,我会感到惊讶。SQL Server 具有出色的跟踪工具。PowerBuilder 有它自己的跟踪数据库连接的能力,虽然它们不那么优雅,但它们非常准确地描述了 PowerBuilder 正在向 DBMS 客户端软件“翻墙”,并且正在返回。

祝你好运,

特里。

于 2012-05-02T04:11:30.217 回答