• You can try this one I published today in SS central:

    http://www.sqlservercentral.com/scripts/Administration/88041/

    SET NOCOUNT ON

    GO

    IF OBJECT_ID('tempdb..#curSQL') IS NOT NULL

    DROP TABLE #curSQL

    GO

    CREATE TABLE #curSQL

    (spID SMALLINT,

    blocked VARCHAR(3),

    hostName VARCHAR(2000),

    dbName VARCHAR(100),

    cmd VARCHAR(100),

    sqlText NTEXT,

    phyIO BIGINT,

    Status VARCHAR(100),

    programName VARCHAR(1000),

    loginTime DATETIME,

    lastBatch DATETIME

    )

    DECLARE @spID smallint,

    ????????@Blocked VARCHAR(3),

    ????????@sqltext VARBINARY(128),

    ????????@physIO BIGINT,

    ????????@hostName VARCHAR(2000),

    ????????@desSPID SMALLINT,

    ????????@dbName VARCHAR(100),

    ????????@Cmd VARCHAR(100),

    ????????@status VARCHAR(100),

    ????????@programName VARCHAR(1000),

    ????????@loginTime DATETIME,

    ????????@lastBatch DATETIME

    ????????

    -- Set desired SPID. If NULL, it will return all non-system SPID's.

    --SET @desSPID = <Put desired SPID her to filter>

    BEGIN TRY

    ????IF @desSPID IS NOT NULL

    ????????DECLARE spID_cursor CURSOR

    ????????FORWARD_ONLY READ_ONLY

    ????????FOR SELECT spid, CASE blocked WHEN 0 THEN 'NO' ELSE 'YES' END blocked, hostname, db_name(dbid), cmd, physical_io, status, program_name, login_time, last_batch

    ????????????FROM sys.sysprocesses

    ????????????WHERE spid = @desSPID

    ????????????GROUP BY spid, blocked, physical_io, hostname, db_name(dbid), cmd, physical_io, status, program_name, login_time, last_batch

    ????????????ORDER BY spid

    ????ELSE

    ????????DECLARE spID_cursor CURSOR

    ????????FORWARD_ONLY READ_ONLY

    ????????FOR SELECT spid, CASE blocked WHEN 0 THEN 'NO' ELSE 'YES' END blocked, hostname, db_name(dbid), cmd, physical_io, status, program_name, login_time, last_batch

    ????????????FROM sys.sysprocesses

    ????????????WHERE spid > 50

    ????????????GROUP BY spid, blocked, physical_io, hostname, db_name(dbid), cmd, physical_io, status, program_name, login_time, last_batch

    ????????????ORDER BY spid

    ????????OPEN spID_cursor

    ????????FETCH NEXT

    ????????FROM spID_cursor

    ????????INTO @spID, @Blocked, @hostName, @dbName, @cmd, @physio, @status, @programName, @loginTime, @lastBatch

    ????????WHILE @@FETCH_STATUS = 0

    ????????BEGIN

    ???????? SELECT @sqltext = sql_handle

    ???????? FROM sys.sysprocesses

    ???????? WHERE spid = @spID

    ???????? INSERT INTO #curSQL

    ???????? SELECT @spID, @Blocked, @hostName, @dbName, @cmd, TEXT, @physio, @status, @programName, @loginTime, @lastBatch

    ???????? FROM ::fn_get_sql(@sqltext)

    ????????

    ???????? FETCH NEXT

    ???????? FROM spID_cursor

    ???????? INTO @spID, @Blocked, @hostName, @dbName, @cmd, @physio, @status, @programName, @loginTime, @lastBatch

    ????????

    ???????? END

    ????????

    ???????? CLOSE spID_cursor

    ???????? DEALLOCATE spID_cursor

    ????

    ????SELECT * FROM #curSQL ORDER BY blocked asc, spid

    END TRY

    BEGIN CATCH

    ????CLOSE spID_cursor

    ????DEALLOCATE spID_cursor

    ????

    ????SELECT ERROR_NUMBER() ErrorNBR, ERROR_SEVERITY() Severity, ERROR_LINE() ErrorLine, ERROR_MESSAGE() Msg

    ????

    ????PRINT 'There was an error in the script.'

    ????

    END CATCH????