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).