View Single Post

   
  #2 (permalink)  
Old 02-28-2008, 08:08 PM
Simon Hayes
 
Posts: n/a
Default Re: Restore database via automated order


"FoxRunner" <claus.rauchschindel@dds.de> wrote in message
news:b7c717fb.0312090728.1b374ba1@posting.google.c om...
> Hi folks,
>
> I got a script which restores a database. It works fine
> if it is running in my Query Analyzer.
>
> It fails when I put this script in an automated schedule using the
> SQL agent.
>
> This is my script
>
> RESTORE DATABASE [RestoreTest]
> FROM DISK = N'E:\sqlbak\RestoreTest.BAK'
> WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY
>
> and this is the error message from the scheduler (Sorry its in German)
>
> Executing as User dbo. Exclusiv access to database not possible
> because
> it is in use (which is not).. Rest may be clear ;-))
>
> Ausführt als Benutzer: dbo. Exklusiver Zugriff auf die Datenbank ist
> nicht möglich, da die Datenbank gerade verwendet wird. [SQLSTATE
> 42000] (Fehler 3101) RESTORE DATABASE wird fehlerbedingt beendet.
> [SQLSTATE 42000] (Fehler 3013). Fehler bei Schritt
>
> Do you have any suggestion to me ?


Some process is accessing the database at the time you want to restore it.
This may be the job itself, if you set the database context for the restore
step to RestoreTest, instead of master.

Even if that is the issue, a better solution is to disconnect any open
connections. You can add a new first job step to do ALTER DATABASE
RestoreTest SET OFFLINE WITH ROLLBACK IMMEDIATE. Then, after restoring it,
use ALTER DATABASE RestoreTest SET ONLINE to make the database available
again. Make sure these steps use master as the database context. This
assumes, of course, that it is acceptable in your environment to disconnect
any client applications without warning.

Simon


Reply With Quote