用C#   SQL 2005 写的一个文件传阅签批程序.用fckedit 来设定 文件的样式模板    将模板的HTML代码 存入到数据库一个字段中贴出我的部分数据表qhf_AddSendDoc 字段
ASD_ID          自动编号 Int Not Null  自增编号
ASD_SendID 发文编号 Varchar(50)    主键  唯一
ASD_LsNum          流水号 Int
ASD_LsNumber 完整流水号 Varchar(100)ASD_DT_ID 发文模板ID
ASD_Name          发文名称
ASD_Unit          发文单位 Varchar(50)
ASD_Secrecy 保密级别 Varchar(50)
ASD_Number 发文号
ASD_OA_ID          归档
ASD_State          状态
ASD_Content 文件内容 varchar(max)   或者 ntext (sql 2000里边用)我将存储的HTML 代码 看了一下  大约  15000 个字符长度问题来了我执行一条语句
DbFuncs.ExecUpdate("update qhf_AddSendDoc set ASD_State='正在办理',ASD_NodeNum='" + str1 + "',ASD_NextNodeNum='" + sdr1["ASDN_NextNode"].ToString() + "' where ASD_SendID='" + ViewState["asdid"].ToString() + "'");就会超时表内数据不多 共170条记录当然不是每次执行都会超时只限于某个文件模板的HTML 代码的  记录别文件代码的执行都正常我找不到问题所在,  难道是HTML 存储在数据库中太多的问题吗?

解决方案 »

  1.   

    检查一下,你的str1 之类的字符串中,是否存在 单引号,如果存在,用类似于 replace 函数改成字符实体,或将它变成两个单引号后,再更新.
      

  2.   

    把ASD_Content这个字段临时去掉,再执行一下
      

  3.   

    我在补充一下语句绝对没有语法错误  我用这条语句更新或者用  存储过程传参的方式更新    都超时  都是某个文件模板   修改的时候超时我的流程时   先设定表存储  文件模板在发文。  然后将文件模板表中的  html  写到  发文表中的 ASD_Content 字段后台代码:ASD_SPLZ_qhf asdmodel = new ASD_SPLZ_qhf();
    asdmodel.ASD_ID = Convert.ToInt32(updateAsd["ASD_ID"].ToString());
    asdmodel.ASD_SendID = updateAsd["ASD_SendID"].ToString();
    asdmodel.ASD_LsNum = Convert.ToInt32(updateAsd["ASD_LsNum"].ToString());
    asdmodel.ASD_LsNumber = updateAsd["ASD_LsNumber"].ToString();
    asdmodel.ASD_DT_ID = updateAsd["ASD_DT_ID"].ToString();
    asdmodel.ASD_Name = updateAsd["ASD_Name"].ToString();
    asdmodel.ASD_Unit = updateAsd["ASD_Unit"].ToString();
    asdmodel.ASD_Secrecy = updateAsd["ASD_Secrecy"].ToString();
    asdmodel.ASD_Number = updateAsd["ASD_Number"].ToString();
    asdmodel.ASD_OA_ID = updateAsd["ASD_OA_ID"].ToString();
    asdmodel.ASD_Stop = Convert.ToBoolean(updateAsd["ASD_Stop"].ToString());
    asdmodel.ASD_JbUserID = updateAsd["ASD_JbUserID"].ToString();
    asdmodel.ASD_JbUserName = updateAsd["ASD_JbUserName"].ToString();
    asdmodel.ASD_UserID = updateAsd["ASD_UserID"].ToString();
    asdmodel.ASD_UserName = updateAsd["ASD_UserName"].ToString();
    asdmodel.ASD_Date = Convert.ToDateTime(updateAsd["ASD_Date"].ToString());
    asdmodel.ASD_Content = ContractContent.Text;
    asdmodel.ASD_NodeNum = Node;
    asdmodel.ASD_NextNodeNum = NextNode;
    asdmodel.ASD_State = sdr["ASD_State"].ToString();
    AddSendDoc_SPLZLib_qhf.Update(asdmodel);中间层:AddSendDoc_SPLZLib_qhf.cs        public static int Update(ASD_SPLZ_qhf model)
            {
                int rowsAffected;
                SqlParameter[] parameters = {
            new SqlParameter("@ASD_ID", SqlDbType.Int,4),
    new SqlParameter("@ASD_SendID", SqlDbType.VarChar,50),
    new SqlParameter("@ASD_LsNum", SqlDbType.Int,4),
    new SqlParameter("@ASD_LsNumber", SqlDbType.VarChar,100),
    new SqlParameter("@ASD_JbUserID", SqlDbType.VarChar,1000),
    new SqlParameter("@ASD_JbUserName", SqlDbType.VarChar,1000),
    new SqlParameter("@ASD_Date", SqlDbType.DateTime),
    new SqlParameter("@ASD_UserID", SqlDbType.VarChar,50),
    new SqlParameter("@ASD_UserName", SqlDbType.VarChar,50),
    new SqlParameter("@ASD_DT_ID", SqlDbType.VarChar,50),
    new SqlParameter("@ASD_Name", SqlDbType.VarChar,500),
    new SqlParameter("@ASD_Unit", SqlDbType.VarChar,50),
    new SqlParameter("@ASD_Secrecy", SqlDbType.VarChar,50),
    new SqlParameter("@ASD_Number", SqlDbType.VarChar,50),
    new SqlParameter("@ASD_State", SqlDbType.VarChar,20),
    new SqlParameter("@ASD_Content", SqlDbType.NText),
    new SqlParameter("@ASD_NodeNum", SqlDbType.VarChar,50),
    new SqlParameter("@ASD_NextNodeNum", SqlDbType.VarChar,50),
    new SqlParameter("@ASD_Stop", SqlDbType.Bit,1),
    new SqlParameter("@ASD_OA_ID", SqlDbType.VarChar,50)};
                parameters[0].Value = model.ASD_ID;
                parameters[1].Value = model.ASD_SendID;
                parameters[2].Value = model.ASD_LsNum;
                parameters[3].Value = model.ASD_LsNumber;
                parameters[4].Value = model.ASD_JbUserID;
                parameters[5].Value = model.ASD_JbUserName;
                parameters[6].Value = model.ASD_Date;
                parameters[7].Value = model.ASD_UserID;
                parameters[8].Value = model.ASD_UserName;
                parameters[9].Value = model.ASD_DT_ID;
                parameters[10].Value = model.ASD_Name;
                parameters[11].Value = model.ASD_Unit;
                parameters[12].Value = model.ASD_Secrecy;
                parameters[13].Value = model.ASD_Number;
                parameters[14].Value = model.ASD_State;
                parameters[15].Value = model.ASD_Content;
                parameters[16].Value = model.ASD_NodeNum;
                parameters[17].Value = model.ASD_NextNodeNum;
                parameters[18].Value = model.ASD_Stop;
                parameters[19].Value = model.ASD_OA_ID;
                RunProcedure("Pro_qhf_AddSendDoc_SPLZ_Update", parameters);
                return (int)parameters[0].Value;
            }数据库存储过程:ALTER PROCEDURE [dbo].[Pro_qhf_AddSendDoc_ADD]
    @ASD_ID int output,
    @ASD_SendID varchar(50),
    @ASD_LsNum int,
    @ASD_LsNumber varchar(100),
    @ASD_JbUserID varchar(1000),
    @ASD_JbUserName varchar(1000),
    @ASD_Date datetime,
    @ASD_UserID varchar(50),
    @ASD_UserName varchar(50),
    @ASD_DT_ID varchar(50),
    @ASD_Name varchar(500),
    @ASD_Unit varchar(50),
    @ASD_Secrecy varchar(50),
    @ASD_Number varchar(50),
    @ASD_State varchar(20),
    @ASD_Content ntext,
    @ASD_NodeNum varchar(50),
    @ASD_NextNodeNum varchar(50),
    @ASD_Stop bit,
    @ASD_OA_ID varchar(50) AS
    INSERT INTO [qhf_AddSendDoc](
    [ASD_SendID],[ASD_LsNum],[ASD_LsNumber],[ASD_JbUserID],[ASD_JbUserName],[ASD_Date],[ASD_UserID],[ASD_UserName],[ASD_DT_ID],[ASD_Name],[ASD_Unit],[ASD_Secrecy],[ASD_Number],[ASD_State],[ASD_Content],[ASD_NodeNum],[ASD_NextNodeNum],[ASD_Stop],[ASD_OA_ID]
    )VALUES(
    @ASD_SendID,@ASD_LsNum,@ASD_LsNumber,@ASD_JbUserID,@ASD_JbUserName,@ASD_Date,@ASD_UserID,@ASD_UserName,@ASD_DT_ID,@ASD_Name,@ASD_Unit,@ASD_Secrecy,@ASD_Number,@ASD_State,@ASD_Content,@ASD_NodeNum,@ASD_NextNodeNum,@ASD_Stop,@ASD_OA_ID
    )
    SET @ASD_ID = @@IDENTITY
    GO
    实在找不到超时的原因   头疼死了  求高手们   看看  有没有遇到过类似的情况啊
    现在刚试了试从任务管理器中将qhf_AddSendDoc  表中的ASD_Content字段从 varchar(max) 改成ntext 
    都不行了
      

  4.   

    上边贴的是添加数据的存储过程。这个是修改的ALTER PROCEDURE [dbo].[Pro_qhf_AddSendDoc_Update]
    @ASD_ID int,
    @ASD_SendID varchar(50),
    @ASD_LsNum int,
    @ASD_LsNumber varchar(100),
    @ASD_JbUserID varchar(1000),
    @ASD_JbUserName varchar(1000),
    @ASD_Date datetime,
    @ASD_UserID varchar(50),
    @ASD_UserName varchar(50),
    @ASD_DT_ID varchar(50),
    @ASD_Name varchar(500),
    @ASD_Unit varchar(50),
    @ASD_Secrecy varchar(50),
    @ASD_Number varchar(50),
    @ASD_State varchar(20),
    @ASD_Content ntext,
    @ASD_NodeNum varchar(50),
    @ASD_NextNodeNum varchar(50),
    @ASD_Stop bit,
    @ASD_OA_ID varchar(50)
     AS
    UPDATE [qhf_AddSendDoc] SET 
    [ASD_SendID] = @ASD_SendID,[ASD_LsNum] = @ASD_LsNum,[ASD_LsNumber] = @ASD_LsNumber,[ASD_JbUserID] = @ASD_JbUserID,[ASD_JbUserName] = @ASD_JbUserName,[ASD_Date] = @ASD_Date,[ASD_UserID] = @ASD_UserID,[ASD_UserName] = @ASD_UserName,[ASD_DT_ID] = @ASD_DT_ID,[ASD_Name] = @ASD_Name,[ASD_Unit] = @ASD_Unit,[ASD_Secrecy] = @ASD_Secrecy,[ASD_Number] = @ASD_Number,[ASD_State] = @ASD_State,[ASD_Content] = @ASD_Content,[ASD_NodeNum] = @ASD_NodeNum,[ASD_NextNodeNum] = @ASD_NextNodeNum,[ASD_Stop] = @ASD_Stop,[ASD_OA_ID] = @ASD_OA_ID
    WHERE ASD_ID=@ASD_ID
    GO
      

  5.   

    TO:cd731107  谢谢你的关注是啊  存储过程和语句都没问题但是 就是个别记录  执行更新语句超时。  用存储过程一样超时。搜索了超时的解决问题  什么设置超时时间  那些  都没用
      

  6.   

    检查一下这些记录的ASD_Content字段值select 看一下,是不是有特殊的地方
      

  7.   

    换了个办法 解决了  新加一个表单独存储 ASD_Content字段你的内容用编号做连接这样在更新qhf_AddSendDoc 就没问题了貌似超长字符串在字段比较多的同一个表中 就会经常碰到各种怪问题