Asp classic 更新NText导致长时间延迟/超时
我正在尝试使用经典ASP更新SQL 2000中的一个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
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(),因为它会导致溢出。即使将其用作字符串,它仍然接受它。再次感谢。