给你贴一篇文章:
浅析“firehose”现象。关键词:Sql Server, ASP, ADO  当我们在使用Ado访问Sql Server数据库,使用事务时,有时会出现如下错误:
"you couldn't begin a transaction in firehose."
那么这个firehose到底是一个什么东东呢?
"firehose"指的是一个只读的游标模式。当我们打开recordset时没有指定游标
类型,则Recordset会以向前的游标打开,与sql Server连用时,我们称之为"firehose",之所以称为"firehose",是因为此连接会一直打开,查询结果会尽快打开,而在这种只读方式下是不能执行事务的。
    如以下几个例子的出错原因都是由于在"firehose"模式。
1)
set dbConn=Server.createObject("adodb.connection")
set dbCmd=Server.CreateObject("adodb.Command")
dbConn.Open "DSN=SQLForum;UID=sa;PWD=;" 
dbConn.BeginTrans
RS.Open "SELECT * FROM Message", dbConn
Set dbCmd.ActiveConnection = dbConn以上语句会提示如下错误信息:
Unspecified error出错的原因就是因为command对象的ActiveConnection的游标模式是readOnly的。
2)set dbConn=Server.createObject("adodb.connection")
dbConn.Open "DSN=SQLForum;UID=sa;PWD=;" 
RS.Open "SELECT * FROM Message", dbConn
dbConn.BeginTrans以上程序会提示你如下错误信息:
Cannot start transaction while in firehose mode.出错的原因是:connection是readOnly的。3)set dbConn=Server.createObject("adodb.connection")
set dbCmd=Server.CreateObject("adodb.Command")
dbConn.Open "DSN=SQLForum;UID=sa;PWD=;"       
RS.Open "SELECT * FROM Message", dbConn
Set dbCmd.ActiveConnection = dbConn
dbConn.BeginTrans以上程序会提示你如下出错信息:
Cannot start transaction because more than one hdbc is in use.原因也是由于connection是只读的。改变“firehose”的方法有几种如下方法:
1.设定Connection的游标类型不是向前的只读的。
2。在开始事务之前要关闭使用同一连接的RecordSet对象。