• Your code is running fine i have checked in SQL 2008 as below

    DECLARE @killspid int , @CMD nvarchar (20)

    DECLARE cur_kill CURSOR FOR SELECT SP.spid, SD.name

    FROM SYSPROCESSES SP JOIN SYSDATABASES SD ON SP.dbid = SD.dbid WHERE SD.name = 'MyDB'

    OPEN cur_kill

    FETCH NEXT FROM cur_kill INTO @killspid ,@CMD

    WHILE @@FETCH_STATUS = 0

    BEGIN

    SET @CMD = 'KILL ' + CAST ( @killspid as Varchar(3))

    EXECUTE sp_executesql @CMD

    PRINT CAST ( @killspid as Varchar(3)) + ' SPID KILLED '

    FETCH NEXT FROM cur_kill INTO @killspid , @CMD

    END

    CLOSE cur_kill DEALLOCATE cur_kill

    go

    --Sp_who2 'Active'

    ALTER DATABASE [MyDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

    RESTORE DATABASE [MyDB] FROM DISK = N'D:\All_File_Fullbackup.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10

    GO

    --RESTORE DATABASE [MyDBName] FROM DISK = N'\\MyServer\LogShipping\MyDBName_backup.bak' WITH FILE = 1,

    --MOVE N'MyDBName_Data' TO N'E:\Data\MyDBName_Data.MDF',

    --MOVE N'MyDBName_Log' TO N'E:\Data\MyDBName_Log.LDF',

    --NOUNLOAD, REPLACE, STATS = 10

    --GO

    56 SPID KILLED

    57 SPID KILLED

    63 percent processed.

    100 percent processed.

    Processed 168 pages for database 'MyDB', file 'MyDB_Primary' on file 1.

    Processed 8 pages for database 'MyDB', file 'MyDB_FG1_Dat1' on file 1.

    Processed 8 pages for database 'MyDB', file 'MyDB_FG1_Dat2' on file 1.

    Processed 8 pages for database 'MyDB', file 'MyDB_FG2_Dat3' on file 1.

    Processed 8 pages for database 'MyDB', file 'MyDB_FG2_Dat4' on file 1.

    Processed 1 pages for database 'MyDB', file 'MyDB_log' on file 1.

    RESTORE DATABASE successfully processed 201 pages in 0.104 seconds (15.099 MB/sec).