IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Probléme Restore Proc stocké


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 161
    Par défaut Probléme Restore Proc stocké
    Bonjour

    je veux faire une procédure stocké pour restorer une Base de donnée. j'ai éssayer ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    create proc restore_base (@F nvarchar(1000)) as
    restore database base from DISK=@F
    mais une erreur est survenue:
    "Exclusive access could not be obtained because the database is in use."

    la question que je dois faire avant le lancement de cette procedure.
    d'avance merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    Avant tout, il faut tuer les utilisateurs présents

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    use master
    go
    create proc restore_base (@db varchar(30), @F nvarchar(1000)) 
    as
    begin
     
    declare @c_spid char(5)
    declare @cmd varchar(30)
     
    declare user_cur cursor for 
    	select convert(varchar(5),spid)
    	from master..sysprocesses
    	where dbid=db_id(@db) 
    		and spid <> @@spid 
    		and sid > 0
     
    open user_cur
     
    fetch next into @c_spid 
     
    WHILE @@FETCH_STATUS = 0
    	begin
    	select @cmd = 'Kill '+@c_spid 
    	exec (@cmd) 
    	fetch next into @c_spid 
    	end
     
    close user_cur
    deallocate user_cur
     
    restore database base from DISK=@F
    end
    go
    ou en SQL2005

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create proc restore_base (@db varchar(30), @F nvarchar(1000)) 
    as
    BEGIN
    ALTER DATABASE @db SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
    restore database @db from DISK=@F
    ALTER DATABASE @db SET MULTI_USER WITH NO_WAIT
    END
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 161
    Par défaut
    Citation Envoyé par fadace
    Avant tout, il faut tuer les utilisateurs présents

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    use master
    go
    create proc restore_base (@db varchar(30), @F nvarchar(1000)) 
    as
    begin
     
    declare @c_spid char(5)
    declare @cmd varchar(30)
     
    declare user_cur cursor for 
    	select convert(varchar(5),spid)
    	from master..sysprocesses
    	where dbid=db_id(@db) 
    		and spid <> @@spid 
    		and sid > 0
     
    open user_cur
     
    fetch next into @c_spid 
     
    WHILE @@FETCH_STATUS = 0
    	begin
    	select @cmd = 'Kill '+@c_spid 
    	exec (@cmd) 
    	fetch next into @c_spid 
    	end
     
    close user_cur
    deallocate user_cur
     
    restore database base from DISK=@F
    end
    go
    ou en SQL2005

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create proc restore_base (@db varchar(30), @F nvarchar(1000)) 
    as
    BEGIN
    ALTER DATABASE @db SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
    restore database @db from DISK=@F
    ALTER DATABASE @db SET MULTI_USER WITH NO_WAIT
    END
    votre procedure marche trés bien. aprés le lancement un message d'érreur:
    "A cursor with the name 'next' does not exist."
    avec le message:
    "RESTORE DATABASE successfully...."

Discussions similaires

  1. Problème proc. stockée sous Oracle 8
    Par davy.g dans le forum Oracle
    Réponses: 10
    Dernier message: 05/09/2007, 08h58
  2. [SqlServer2000] Problème de temps d'exécution d'une proc stock
    Par GuillaumeBibaut dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/11/2006, 14h31
  3. Réponses: 3
    Dernier message: 18/08/2006, 10h20
  4. Probléme Restore Proc stocké
    Par Bba_M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/06/2006, 21h11
  5. [Débutant] Problème avec les paramètres d'une proc stockée
    Par babulior dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/06/2005, 15h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo