diff --git a/SiteServer.CMS/Provider/DatabaseDao.cs b/SiteServer.CMS/Provider/DatabaseDao.cs index e5072cdbe..0bff7f2cd 100644 --- a/SiteServer.CMS/Provider/DatabaseDao.cs +++ b/SiteServer.CMS/Provider/DatabaseDao.cs @@ -2023,28 +2023,25 @@ public string GetPageSqlString(string tableName, string columnNames, string wher } else if (WebConfigUtils.DatabaseType == DatabaseType.SqlServer && IsSqlServer2012) { - if (IsSqlServer2012) + retval = limit == 0 + ? $"SELECT {columnNames} FROM {tableName} {whereSqlString} {orderSqlString} OFFSET {offset} ROWS" + : $"SELECT {columnNames} FROM {tableName} {whereSqlString} {orderSqlString} OFFSET {offset} ROWS FETCH NEXT {limit} ROWS ONLY"; + } + else if (WebConfigUtils.DatabaseType == DatabaseType.SqlServer && !IsSqlServer2012) + { + if (offset == 0) { - retval = limit == 0 - ? $"SELECT {columnNames} FROM {tableName} {whereSqlString} {orderSqlString} OFFSET {offset} ROWS" - : $"SELECT {columnNames} FROM {tableName} {whereSqlString} {orderSqlString} OFFSET {offset} ROWS FETCH NEXT {limit} ROWS ONLY"; + retval = $"SELECT TOP {limit} {columnNames} FROM {tableName} {whereSqlString} {orderSqlString}"; } else { - if (offset == 0) - { - retval = $"SELECT TOP {limit} {columnNames} FROM {tableName} {whereSqlString} {orderSqlString}"; - } - else - { - var rowWhere = limit == 0 - ? $@"WHERE [row_num] > {offset}" - : $@"WHERE [row_num] BETWEEN {offset + 1} AND {offset + limit}"; + var rowWhere = limit == 0 + ? $@"WHERE [row_num] > {offset}" + : $@"WHERE [row_num] BETWEEN {offset + 1} AND {offset + limit}"; - retval = $@"SELECT * FROM ( + retval = $@"SELECT * FROM ( SELECT {columnNames}, ROW_NUMBER() OVER ({orderSqlString}) AS [row_num] FROM [{tableName}] {whereSqlString} ) as T {rowWhere}"; - } } } else if (WebConfigUtils.DatabaseType == DatabaseType.PostgreSql) diff --git a/SiteServer.Web/Web.config b/SiteServer.Web/Web.config index 1c175ebd4..69921e6b9 100644 --- a/SiteServer.Web/Web.config +++ b/SiteServer.Web/Web.config @@ -14,7 +14,6 @@ -