MSSQL数据库不能手动创建新的连接
来源:优易学  2011-9-13 8:26:29   【优易学:中国教育考试门户网】   资料下载   IT书店

  相信在使用MSSQL数据库下使用事务回滚方式操作多表记录的时候,会经常出现“不能在手动或分布事务方式下创建新的连接”的出错提示信息,这个问题也已困扰我多年。
  这次在开发一个大型的商务平台的时候,涉及到数据的计算,同时也必须要多表更新(或删除)。借助GOOGLE也没找到一个真能解决的问题。以前收集过一个MSDN的说明,官方的提示必须,只有用SQL语句执行数据库操作才能使用事务处理。
  从官方提示上理解,事式处理中涉及到查询(Select)时,会出现这种出错提示。同时也应该与记录指针(Cursors)有关联。试着这样的思路,将事务处理中原出现的Conn.Execute("select ... from ...")修改为使用rs.Open...命令打开记录集,问题解决。
  MSDN说明:
  Tips for Working with Cursors
  Some providers, such as SQL Server, implement a forward-scrolling, read-only (or ’firehose’) cursor mode, meaning that they can efficiently retrieve data by keeping a connection open. When working with such providers, the connection could be blocked by another user’s transaction. The following examples demonstrate scenarios
  that result in errors.
  dbConn.Open "DSN=SQLForum;UID=sa;PWD=;"
  ’Example 1
  dbConn.BeginTrans
  RS.Open "Select * FROM Message", dbConn
  Set dbCmd.ActiveConnection = dbConn
  Example 1: The problem is that the command object’s ActiveConnection is being set to a connection that is forward-scrolling and in ’firehose’ mode. This is the same connection involved in the batch mode. The error from the provider will only appear in the Err object, and it will return as unspecified. For example, with the ODBC

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训