• I've never had any problem in a script when using SINGLE_USER, followed by another command against that database.

    You could move the script around so the drop and restore are done straight after the set single user command to lessen the time that anything else could connect.

    Even with the kill method you're still susceptible to something else reconnecting to the database.

    Although I'd still recommend using WITH REPLACE on the restore rather than dropping the database first then restoring.