Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Administration
Administration Forum d'entraide sur l'administration du dataserver, via SSM ou ligne de commande, les tables système, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/06/2006, 22h11   #1
Membre régulier
 
Inscription : mai 2006
Messages : 161
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 161
Points : 79
Points : 79
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 :
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.
Bba_M est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2006, 08h09   #2
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

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

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
Avant tout, il faut tuer les utilisateurs présents

Code :
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 :
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 / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2006, 21h11   #3
Membre régulier
 
Inscription : mai 2006
Messages : 161
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 161
Points : 79
Points : 79
Citation:
Envoyé par fadace
Avant tout, il faut tuer les utilisateurs présents

Code :
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 :
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...."
Bba_M est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h02.


 
 
 
 
Partenaires

Hébergement Web