在恢复过程中,指定的数据库必须不处于使用状态。
conn打开时不要指定数据库
set conn=nothing
conn.ConnectionString = "provider=SQLOLEDB;server=(local);uid=sa;pwd="
conn.CursorLocation = adUseClient
conn.Open
conn.Execute "restore database CulpritInfoSystem  from  disk='c:\a.dat'"

解决方案 »

  1.   

    in database master ,create the following stored procedure, and conn.Execute "use master;exec sp_killDBProcesses(" + strDBName + ");restore..." First kill all the process that use your database,and restore you database .CREATE PROCEDURE sp_KillDBProcesses
    ( @DBName nvarchar(50)
    )
    AS
    DECLARE @ProcessID smallint
    DECLARE @SQL nvarchar(50) DECLARE DBProcessesCursor INSENSITIVE CURSOR FOR
    SELECT     sysprocesses.spid
    FROM         sysprocesses INNER JOIN
                          sysdatabases ON sysprocesses.dbid = sysdatabases.dbid
    WHERE     (sysdatabases.name = @DBName) OPEN DBProcessesCursor FETCH NEXT FROM DBProcessesCursor INTO @ProcessID WHILE @@FETCH_STATUS = 0
    BEGIN
    SET @SQL =  'KILL ' + CAST(@ProcessID AS nvarchar(4))
    EXEC sp_executesql @SQL
    FETCH NEXT FROM DBProcessesCursor INTO @ProcessID
    END CLOSE DBProcessesCursor
    DEALLOCATE DBProcessesCursor