情况
我有一个 (Tomcat) Java Web 应用程序,它使用 jTDS 连接到 MSSQL 2008 数据库。此 Java 应用程序使用用户输入执行其 99% 的 MSSQL 存储过程。
问题
jTDS 驱动程序有时(在应用程序的不同位置)回复错误:
超出最大存储过程、函数、触发器或视图嵌套级别(限制 32)。
我们可以通过添加prepareSQL=0
到 jTDS 连接字符串来避免这种情况。然后错误到处消失,但对于所有其他值prepareSQL
,错误仍然存在。我不知道 jTDS 添加了多少存储过程嵌套级别,但显然对于我们的应用程序来说太多了。
问题
prepareSQL=3
只需要执行存储过程,当然在 Java 代码中使用 Prepared Statements, (或prepareSQL=0
)对我们有多大影响?换句话说:在每个网站上,我发现有人说“从不prepareSQL=0
在生产环境中使用”,这也适用于这种情况吗?如果
prepareSQL=0
不是推荐的解决方案、安全问题等,我们也许应该寻找另一个驱动程序。jTDS 在过去 2 年没有更新,Microsoft 有 JDBC 4.0 的驱动程序。我找不到 jTDS 和 Microsoft 的 JDBC 4.0 驱动程序之间的任何基准或比较。对于 Microsoft 的 2.0 和 3.0 驱动程序,普遍的看法似乎是 jTDS 更快、更好、更高效。JDBC 4.0 仍然是这种情况,还是微软在这方面超过了它的竞争对手?