本地是 MS SQL 2005 能正常运行
服务端是 MSSQL 2000出错信息
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------第 1 行: '(' 附近有语法错误。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 第 1 行: '(' 附近有语法错误。源错误: 
行 188:                Da.SelectCommand.Parameters.Add(Para);
行 189:                DataTable Dt = new DataTable();
行 190:                Da.Fill(Dt);
行 191:                DataRowCollection Ds = Dt.Rows;
行 192:                String Title="";
 出错代码 //加载数据
    private void LoadArticle(String ParentClass,String SubClass,String NowPage)
    {
        String _Html = "";        using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString))
        {
            using (SqlDataAdapter Da = new SqlDataAdapter("SqlPage", conn))
            {
                Da.SelectCommand.CommandType = CommandType.StoredProcedure;
                Da.SelectCommand.Parameters.Add(new SqlParameter("@TableName", "Article"));
                Da.SelectCommand.Parameters.Add(new SqlParameter("@Fields", "Title,AddTime,_FileName,SubClass"));
                Da.SelectCommand.Parameters.Add(new SqlParameter("@OrderFields", " id desc"));
                #region 
                String SqlWhere = "";
                if (ParentClass != "0")
                {
                    SqlWhere += " and ParentClass=" + ParentClass;
                    SqlWhere += " and SubClass=" + SubClass;
                }
                else
                {                    SqlWhere += " and SubClass=" + SubClass + " or ParentClass=" + SubClass;
                }
                #endregion                 Da.SelectCommand.Parameters.Add(new SqlParameter("@SqlWhere", SqlWhere));
                Da.SelectCommand.Parameters.Add(new SqlParameter("@PageSize", 30));
                Da.SelectCommand.Parameters.Add(new SqlParameter("@PageIndex", NowPage));
                SqlParameter Para = new SqlParameter("@TotalPages", SqlDbType.Int);
                Para.Direction = ParameterDirection.Output;
                Da.SelectCommand.Parameters.Add(Para);
                DataTable Dt = new DataTable();
                Da.Fill(Dt);
                DataRowCollection Ds = Dt.Rows;
                String Title="";
                foreach (DataRow Dr in Ds)
                {
                    Title=Dr["Title"].ToString();
                    _Html += "<li>[" + ReMenu(Dr["SubClass"].ToString()).Replace("&nbsp;>>&nbsp;", "") + "]&nbsp;<a href=\"" + Dr["_FileName"].ToString() + "\" target=\"_blank\" title=\"" + Title + "\" class=\"ArticleSubMenu\">" + Title + "</a> </li>";
                }
                conn.Close();
                MenuUrl(Para.Value.ToString(), ParentClass, SubClass, NowPage);
                F_SiteMap(ParentClass, SubClass);
            }
        }
        MyIndex.Text = _Html;
    }

解决方案 »

  1.   

    加断点调试一下看看sql语句是什么
      

  2.   

    我这里是一个存储过程
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    goALTER procedure [dbo].[SqlPage]
        @TableName varchar(50),                  --表或视图名
        @Fields varchar(5000) = '*',              --字段名(全部字段为*)
        @OrderFields varchar(5000),            --排序字段(必须!支持多字段,建议建索引)
        @SqlWhere varchar(5000) = '',         --条件语句(如and Name='a')
        @PageSize int,                                     --每页多少条记录
        @PageIndex int = 1 ,                        --指定当前为第几页
        @TotalPages int output                    --返回总页数 
    as
    begin 
        declare @sql nvarchar(4000)
        declare @TotalRecords int       --计算总记录数及总页数     
        set @sql = 'select @TotalRecords = count(*) from ' + @TableName + ' where 1=1 ' + @sqlWhere
        exec sp_executesql @sql,N'@totalRecords int output',@TotalRecords output
        select @TotalPages=CEILING((@TotalRecords+0.0)/@PageSize)    --处理页数超出范围情况
        if @PageIndex<=0 
            set @PageIndex = 1
        if @PageIndex>@TotalPages
            set @PageIndex = @TotalPages    set @sql = 'select '+ @Fields + ' from (select top(@PageIndex*@PageSize) ' + @Fields + ',row_number() over(order by ' + @OrderFields + ') as rowNumber from ' + @TableName + ' where 1=1 ' + @SqlWhere + ') t where t.rowNumber >= ((@PageIndex-1)*@PageSize+1)'
        
        --print @Sql   
        exec sp_executesql @sql,N'@PageIndex int, @PageSize int',@PageIndex,@PageSize  
    end