【发布时间】:2010-05-20 13:32:15
【问题描述】:
所以我们有一个软件,它的 SQL 语句写得不好,导致表中的每一行都被返回。表中有几百万行,因此这会导致我们的客户端机器出现严重的内存问题和崩溃。供应商正在为该问题创建补丁程序,但仍需几周时间。同时,我们试图找出一种方法来限制服务器端返回的结果数量,作为临时修复。
我对有解决方案没有真正的希望,我环顾四周并没有真正看到任何方法,但是我希望有人可能有一个想法。
提前谢谢你。
编辑
我忘记了一条重要信息,我们无法访问源代码,因此我们无法在形成 SQL 语句的客户端更改它。没有真正的服务器端组件,客户端只是直接访问数据库。任何解决方案基本上都需要一个过程、触发器或某种 SQL-Server 2008 设置/命令。
【问题讨论】:
-
这个临时修复会破坏应用程序吗?你知道这些数据是如何被使用的吗?
-
重命名表并将其替换为执行
SELECT TOP x * FROM new_name_of_the_table的视图。但是请注意,应用程序执行的数据操作(INSERT、UPDATE、DELETE)之后会失败。 -
@Heinzi 不幸的是,我们需要能够插入、更新和删除。
-
为什么在Client应用程序中形成SQL语句?如果 SQL 是在客户端应用程序中形成的,而您没有这方面的源代码,我看不出您将如何限制返回的行数。
-
@Ardman 因此我问这个问题,我想知道是否有设置或方法对数据库端设置硬限制。
标签: sql-server sql-server-2008 client-server