The alternative to a cursor in tsql is to use a set based method to get the work done. It's not always possible, but usually is.
Other alternatives are to use other looping constructs, such as WHILE, but that's not any better than a cursor. the issue with cursors is not cursors themselves, but they they are RBAR (row by agonizing row - phrase is Jeff Moden's) methods. a WHILE loop, or any other looping construct, will have the same poor perf as a cursor.