访问大量行和数据时,SQL Server GUI会一直冻结

时间:2017-08-09 18:49:24

标签: sql sql-server linux database user-interface

我正在使用Linux Ubuntu 16.04并使用RazorSQL GUI来访问各种数据库。我正在访问客户端SQL Server(Microsoft 2008 R2)以从查询生成一个表,该查询包含超过5000行并且具有大约5列。其中一列是图像数据类型。每次我运行查询时都会超时并冻结,所以我需要从终端运行xkill才能将其关闭。我需要获取我正在处理的项目的所有结果,所以我不能一次只获取10个。

有没有人对如何防止GUI冻结有任何建议,或者可以建议使用更好的GUI?

以下是查询可能是我的查询引起的吗?

SELECT 
    a.*
    , cast(b.Bytes as varbinary(max)) as Bytes
FROM
    (
SELECT DISTINCT
    a_inner.Number
    , a_inner.Latitude
    , a_inner.Longitude
    , b_inner.RetiredOn
    , b_inner.NonSaleable
    , a_inner.Name
    , a_inner.Zipcode
    , b_inner.Oid
    , c_inner.TabId
FROM
    "AM-Martin".dbo.CpCore_Site a_inner
    INNER JOIN "AM-Martin".dbo.CpSm_Face b_inner on b_inner.SiteId = a_inner.Oid
    INNER JOIN "AM-Martin".dbo.EyesOn_Face c_inner on b_inner.Oid = c_inner.Oid
WHERE
     b_inner.RetiredOn > GETDATE()
     AND a_inner.Number LIKE N'%LA%' OR a_inner.Number LIKE N'%LC%' OR a_inner.Number LIKE N'%BH%'
     AND b_inner.Latitude > 0.0
     AND b_inner.NonSaleable = 'False'


) AS a
CROSS APPLY(SELECT TOP 1 
                Bytes 
            FROM "AM-Martin_bin".dbo.CpCore_Image b
            WHERE a.Oid = b.OwnerId) b;

1 个答案:

答案 0 :(得分:1)

了解如何做到这一点。 RazorSQL只允许最多324Mb我必须在Sublime Text中实际搜索该数字,我发现包含代码的文件,所以我更改了最大324Mb。该文件是razorsql.sh文件,我更改的代码在这里,我更改的行是在第四行,它表示10000M(10GB):

#!/bin/sh
CWD=$(dirname "$0")
CMD="$CWD/razorsql.jar"
$CWD/jre/bin/java -Xms256M -Xmx10000M -client -jar ${CMD}
RC=$?
if [ ${RC} != 0 ]; then
        echo "Error returned code found. Retrying . . ."
        $CWD/jre/bin/java -Xms256M -Xmx2048M -client -jar ${CMD}
        RC2=$?
        if [ ${RC2} != 0 ]; then
                echo "Trying local JRE . . ."
                java -Xms256M -Xmx2048M -client -jar ${CMD}
        fi
fi

他们没有在他们的支持中解释这一点,所以我不得不做一些自己的挖掘。