Also I try in this way.
Set aCon = ADO.CreateConnection
aCon.ConnectionString = cConnectionString
aCon.Open
aCon.CommandTimeout = 300
Set aCmd = ADO.CreateCommand
aCmd.ActiveConnection = aCon
aCmd.CommandType = adCmdText
aCmd.CommandText = "ALTER DATABASE as_testing_test SET SINGLE_USER WITH "& _
"ROLLBACK IMMEDIATE "&_
"RESTORE DATABASE as_testing_test "& _
"FROM DISK = 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\as_tesing_05042012.bak' "& _
"WITH MOVE 'as_enterprise_model_Data' "& _
"TO 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\as_testing_test.mdf', "& _
"MOVE 'as_enterprise_model_Log' "& _
"TO 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\as_testing_test.ldf' "&_
"ALTER DATABASE as_testing_test SET MULTI_USER"
Set aRecSet = aCmd.Execute
But I have an timeout error, although I set commandtimeot = 300 seconds. In Sql it works fine, and lasts about 180 seconds.