解决ASP+SQL Server7的MTS事务处理问题,心情不错 ^^ 散分,来者有份!

zipy 2001-11-30 04:04:25
其实是还没有解决啊!!!!不过解决了分一定不会少的!!


200分求ASP+SQL Server7(ODBC)的MTS事务处理问题!分不够会再给!

有人在页面里事务处理用MTS方式的吗?
即在ASP头加<%@ Transaction=required Language=VBScript %>的方法。

现在碰到一个问题是加这个后页面出错信息为:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'

无法指出的错误

/xhmrp/bomgl/bompz1.asp, 行57
源代码为

Set Conn = Server.CreateObject("Adodb.Connection")
Conn.Open session("connection1_ConnectionString"), session("user"),session("pass")
sqltxt1 = "select * from tbbompoolhead where 流水号='"&session("dh")&"'"
Set rs1 = Server.CreateObject("ADODB.RecordSet")
rs1.Open sqltxt1,Conn

...
...
'rs1.colse
sqren=rs1("申请人")
if not sqren="" then sqltxta = "select 中文姓名 from tbemployer where 姓名='"&sqren&"'"
Set rsa = Server.CreateObject("ADODB.RecordSet")
rsa.Open sqltxta,Conn 》》》》》即报错的第57行。

有哪个同仁碰到过类似的问题吗?
该段程序以前在一服务器上运行一直良好,但重装一服务器并移植后就出现该现象。如果把53行rs1.close有效的话就不报错,不过rs1不能过早关闭;去掉开头的Transaction=required后就不报错了。故怀疑是关于MTS等的设置有问题,但百思不得其解,故来求助。
一次最多只能给85分,如有能解决的再给双倍酬谢!
...全文
130 13 打赏 收藏 转发到动态 举报
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
houtianxi 2001-12-25
  • 打赏
  • 举报
回复
有些问题就这样,没法解释,估计是你的有些dll或ocx版本太,有一次我的comdlg.ocx版本太低,结果打开一个纪录集都报错,你试试升级一些ocx版本!!
iflycat 2001-12-25
  • 打赏
  • 举报
回复
太正常了 我们现在做的一套系统也是 在新建一个 recordset 对象之前必须先关闭之前建立的对象,否则绝对出错。其实仔细修改一下程序就成,没有十分的必要同时打开两个记录集的,至少我没有遇到。还有哦,这样的错误估计和 mts 是没有什么关系的,赫赫
blackant2 2001-12-24
  • 打赏
  • 举报
回复
sqren=rs1("申请人")
if not sqren="" then sqltxta = "select 中文姓名 from tbemployer where 姓名='"&sqren&"'"
Set rsa = Server.CreateObject("ADODB.RecordSet")
rsa.Open sqltxta,Conn 》》》》》即报错的第57行。

if sqren="" then
rsa.open "",conn???
nowokcom 2001-12-24
  • 打赏
  • 举报
回复
先看看是否rs1的错误,
Response.write rs1("申请人")

排除法查错

xiaoxiaohan 2001-12-24
  • 打赏
  • 举报
回复
圣诞快乐!!
zipy 2001-12-10
  • 打赏
  • 举报
回复
难道就没有哪位大侠碰到过这样的情况吗?!!!!
zipy 2001-12-02
  • 打赏
  • 举报
回复
laynx(laynx):
按照我对MTS方式事务处理方法的理解,应该不会要求立即关闭同一个conn里的rs。
将光标类型设为客户端光标?该怎么设?
将recordset的activeconnection设为nothing?有什么用呢?
我以前这些语句应该都是正确的呀,能够在一服务器上运行正常的。

restart2001(呵呵,天气冷了不洗澡了。。),wxt(D.K):
我现在就是怀疑有哪个设置和原来的不一样,我几乎是按照原来的配置设置的,也考虑到了软件版本的向下兼容性问题。是不是有一个微小的地方正是需要设置的地方,而我没有注意到呢?请各位大侠指点迷津呀~~~~
laynx 2001-12-01
  • 打赏
  • 举报
回复
可能是由于第一个recordset占用着有效的数据库连接,导致第二个recordset不能再次使用该数据库连接来打开recordset。
我认为如果换成两个不同的数据库连接就不会出现这样的问题。但最好的方法还是将第一个recordset关闭。recordset里的数据可以用读出来,或者将光标类型设为客户端光标,然后将recordset的activeconnection设为nothing
wxt 2001-12-01
  • 打赏
  • 举报
回复
不是MTS的问题,请查看服务器的区域设置是否和原来一样。
restart2001 2001-11-30
  • 打赏
  • 举报
回复
你的服务器变动了哪些,尤其是软件方面,小的升到大的问题不大,但大的降到小的就。。。
zipy 2001-11-30
  • 打赏
  • 举报
回复
都试过个种排列组合了,没有用。
第一次的数据链接都能正常打开,就是在第二次的时候会出错。将第一个recordset先关闭再打开第二个就行了。但这样局限性很大,不打算采用这种方式。而且全部代码在原来的服务器上运行都没有问题的
restart2001 2001-11-30
  • 打赏
  • 举报
回复
打开recordset时,,指定游标类型和记录类型,即
rsa.open sqltxta,conn,[0..4],[1..4],
zipy 2001-11-30
  • 打赏
  • 举报
回复
忘了说是 NT4.0Server + sp6 + IIS4

34,427

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告