Asp classic 更新NText导致长时间延迟/超时

Asp classic 更新NText导致长时间延迟/超时,asp-classic,sql-server-2000,ado,Asp Classic,Sql Server 2000,Ado,我正在尝试使用经典ASP更新SQL 2000中的一个NText字段。这是我用来做这件事的代码。有人对如何加速有什么建议吗?还是我被它困住了 set Cnn = server.CreateObject("ADODB.connection") Cnn.ConnectionString = Application("Cnn_ConnectionString") Cnn.open set rs = server.CreateObject("ADODB.Recordset") rs.CursorTyp

我正在尝试使用经典ASP更新SQL 2000中的一个NText字段。这是我用来做这件事的代码。有人对如何加速有什么建议吗?还是我被它困住了

set Cnn = server.CreateObject("ADODB.connection")
Cnn.ConnectionString = Application("Cnn_ConnectionString")
Cnn.open 
set rs = server.CreateObject("ADODB.Recordset")

rs.CursorType = adoOpenDynamic
rs.LockType = adLockOptimistic      
conChunkSize = 100   
rs.Open "MyTable",Cnn, , , adCmdTable 
rs.Find "MyDataId=" & request("DataId"),,adSearchForward,1     

lngOffset = 0   
lngLogoSize = len(request("txtMyEntry"))*2
Do while lngOffset < lngLogoSize
    varChunk = LeftB(RightB(request("txtMyEntry"), lngLogoSize - _
               lngOffset), conChunkSize)
        rs("MyDataField").AppendChunk varChunk
        lngOffset = lngOffset + conChunkSize
    Loop

rs.Update
rs.Close
set Cnn=server.CreateObject(“ADODB.connection”)
Cnn.ConnectionString=应用程序(“Cnn\u ConnectionString”)
美国有线电视新闻网
set rs=server.CreateObject(“ADODB.Recordset”)
rs.CursorType=adoOpenDynamic
rs.LockType=adlockType
conChunkSize=100
rs.打开“MyTable”,Cnn,,adCmdTable
rs.查找“MyDataId=”&请求(“DataId”),,adSearchForward,1
lngOffset=0
lngLogoSize=len(请求(“txtmentry”)*2
当lngOffset

哦,这段代码几乎是一字不差的

首先,我要消除90年代的分块现象

其次是:-

rs.Open "MyTable",Cnn, , , adCmdTable 
rs.Find "MyDataId=" & request("DataId"),,adSearchForward,1  
哎呀!您可能会认为ADO智能地要求SQL server根据索引的MyDataId字段查找该记录,但我打赌它不会。它很可能会将表的全部内容拉过,直到找到记录为止

这确实应该通过UPDATE T-SQL语句和ADODB.Command对象来完成

Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = cnn
cmd.CommandType = 1 '' // adCmdText
cmd.CommandText = "UPDATE MyTable SET MyDataField = ? WHERE MyDataId = ?"
cmd.Parameters.Append cmd.CreateParameter("dataField", 203, 1, Len(txtMyEntry), txtMyEntry)  '' // 203 = asLongVarWChar, 1 = adParamInput
cmd.Parameters.Append cmd.CreateParameter("id", 3, 1, , CInt(DataID)) '' // 3 = adInteger
cmd.Execute

它将帮助您指定实际写入字段的数据量。数据只是文本,从200到300个字符,一直到10或12k。我愿意参与这一问题。我不确定我是否理解你的示例代码,但我明天会试一试。嘿,谢谢你在这方面的帮助。不过,我确实不得不对它做一点小小的改变。我必须更改CInt(),它只是Int(),因为它会导致溢出。即使将其用作字符串,它仍然接受它。再次感谢。