CLEAR h1=SQLSTRINGCONNECT('Driver={SQL Server};Network=DBNETLIB;SERVER=Server;DATABASE=G1;Trusted_Connection=Yes',.T.) CURSORSETPROP("FetchSize",1,0) CURSORSETPROP("FetchAsNeeded",.T.,0) CURSORSETPROP("AllowSimultaneousFetch",.F.,0) TEXT TO cmd NOSHOW CREATE TABLE #T1 (id INT) DECLARE @id INT SET @id=0 WHILE @id<100000 BEGIN INSERT #T1 VALUES (@id) SET @id=@id+1 END ENDTEXT ? 'Build Temporary Table ....' IF SQLEXEC(m.h1,m.cmd)=1 AND SQLSETPROP(m.h1,"Asynchronous",.T.)=1 T1=SECONDS() ? 'Exec StatementBusy 1 ..... ' IF SQLEXEC(m.h1,'SELECT id FROM #T1','C1')#-1 ?? 'Wait ...' DO WHILE !USED('C1') AND SQLEXEC(m.h1)=0 AND INKEY(0.1)=0 ENDDO ?? 'Build Cursor in ',SECONDS()-M.T1 ? ' Connection 1 of StatementBusy is Busy ',SQLGETPROP(m.h1,"ConnectBusy") h2=SQLCONNECT(m.h1) ? 'ASYNCRONOUS StatementBusy 2 ',SQLGETPROP(m.h2,"Asynchronous") ? 'Exec StatementBusy 2 ..........' IF !SQLGETPROP(m.h2,"ConnectBusy") T1=SECONDS() IF SQLEXEC(m.h2,'SELECT id FROM #T1','C2')<0 ? MESSAGE() ? 'But connection of StatementBusy 2 is Busy :',SQLGETPROP(m.h2,"ConnectBusy") && name is connectBusy, not StatementBusy then it must to be .T. ELSE ?? 'Wait ...' DO WHILE !USED('C2') AND SQLEXEC(m.h2)=0 AND INKEY(0.1)=0 ENDDO ?? 'Build Cursor 2 in ',SECONDS()-M.T1 ENDIF RETURN ENDIF SQLCANCEL(m.h2) SQLDISCONNECT(m.h2) RETURN ENDIF ENDIF SQLCANCEL(m.h1) SQLDISCONNECT(m.h1)Then the solutions are two: