while working in COM+ I came across a problem.I have worked on J2EE also and but this problem never arose even under the same conditions.<BR><BR><BR>The scenario <BR>It is a room booking system.<BR>(note as per our architecture all DAN components are non-transactional and DAT are transactional)<BR><BR>I have three componenets taking part in the a single operation and obviously it is a transactional operation<BR><BR>The components are<BR><BR>1) Component BookingDAN(Transaction not supported)<BR>method:checkTimeRange();<BR>Descript ion:checks the time range for a particular room booking is available or not<BR><BR>2) Component BookingDAT(Transaction required)<BR>a) method :addBooking();<BR>Description :adds a particular booking to the database.<BR><BR>b) method :deleteBooking<BR> <BR>description : deletes a booking from the database.<BR><BR>3) Component BookingMGR(Transaction required)(Root component of the transaction)<BR><BR>a) method :addBooking();<BR> Description :adds a particular booking to the database(calls the addbooking() method of DAT componenet.<BR><BR>b) method :editBooking<BR><BR>description : Edits a selected booking like(deletes the selected booking and add the new parameters as a new booking)<BR><BR><BR><BR><BR>for addBooking method of the root component(bookingMGR) the sequesnce of the operaion is like this<BR><BR> a)validation of the time range using DAN componenets ckectTimeRange method(remeber DAN componenets are non-transactional)<BR> b)If no booking exists agains the time range then addBooking method of the bookingDAT component is called.<BR><BR>then there are couple of more operation which are irrelevant to the problem so I am not siting them here.<BR><BR>This transaction works perfect<BR><BR><BR>Now the real problem is with the second method of the rootComponenet (editBooking())<BR>the sequence of operation is like following<BR><BR>(logic of edit booking interface:If theere is a booking for Room No:30 from 8:30 to 10:30 the user wants edit this booking and make it a booking from 9:30 to 12 the xisting booking will be deleted and a new booking will be made)<BR><BR>The sequesnce of operation performed by the root componenet&#039;s BookingMGR&#039;s method edit booking :<BR> a) delete the the existing booking(delete method of bookingDAT componrenet)<BR> b) validate the time range by calling the checkTimeRange of the bookingDAN componenet(please note that this componenet is a non transactional component) <BR> c)add a new booking by calling addBooking method of bookingDAT component.<BR><BR>the problem has two context<BR><BR>when the datasource is SQL Server7 , once this method is called the system crahses <BR><BR>If the database is Oracle8i the then system does not crash but the deletion is not visible to the checkTimeRange method of bookingDAN component <BR>that is if I delete a booking from 10:00 to 11:11 and call the mthod checkTimeRange() for a time range 10:00 to 11:00 it returns true.<BR> only my laptop gave (data source sqlserver) gave the error method~of object~bookingDAN failed.<BR><BR><BR>in that case I gave the DAN componenet (as per our architecture not supposed to be transactional) support tarnsaction attribute and all the problems vanished.<BR><BR>Can some one help me out on this.As my experince goes with EJB this was never an issue.Are we not supposed to use a non-transactional componenet within a transaction or is it because of some other problem.Any help will be highly appreciated.<BR><BR>