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 10/06/2011, 11h11   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 60
Points : 11
Points : 11
Par défaut Restaurer une base de données

Bonjour , dans mon application j'ai une option qui permet de restaurer une base de données qui est en fait la même que celle utilisée.

Donc j'ai l'erreur , impossible de restaurer la base car elle est en cours d'utilisation.Ce qui peut paraître logique mais alors comment faire pour ecraser
les données en mettant une nouvelle base ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SqlCommand cmdSql = new SqlCommand();
          SqlConnection osqlconnect = PersistDATA.Pconnect.OpenConnectionMaster();
          cmdSql.Connection = osqlconnect;
 
 
          try
          {
              cmdSql.CommandType = CommandType.Text;
 
              cmdSql.CommandText = "USE MASTER";
              cmdSql.ExecuteNonQuery();
 
              cmdSql.CommandText = "RESTORE DATABASE [DB_base] FROM  DISK ='" + filename + "' WITH REPLACE";
 
 
              cmdSql.ExecuteNonQuery();
 
 
 
          }
Si quelqun a déjà été confronté au problème , merci d'avance.
Am34000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 12h11   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Quel est votre SGBD ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 13h20   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 60
Points : 11
Points : 11
Par défaut Restaurer une base de données

SQL SERVER 2005
Am34000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 13h50   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
La restauration étant u opération qui n'existe pas en SQL, Veillez poster dans le forum ADMINISTRATION approprié à votre SGBDR. Ici SQL Server.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2011, 21h51   #5
Invité de passage
 
Homme
Administrateur de base de données
Inscription : juin 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Conseil

Informations forums :
Inscription : juin 2011
Messages : 2
Points : 4
Points : 4
c'est dû au fait qu'il y a des connexions sur ta base, c'est souvent le cas sur des bases existantes que l'on veut écraser avec un restore .
donc avant le restore tu dois les fermer, 2 méthodes :

- "KILL spid" sur chaque session
ou plus expéditif :
- "ALTER DATABASE XXX SET OFFLINE WITH ROLLBACK IMMEDIATE"

ensuite tu peux restaurer la base avec l'option "REPLACE"

cdt
maj.
majbou est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/06/2011, 09h27   #6
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 60
Points : 11
Points : 11
Par défaut Restaurer une base de données

Merci beaucoup majbou ,
je viens de l'essayer ca fontionne très bien.
Am34000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 10h50   #7
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 60
Points : 11
Points : 11
Par défaut Restaurer une base de données

Juste une derniere question comment eviter l'erreur de niveau de tansport ensuite ?

En sachant que j'utilise essentiellement le linq dans appli.
Am34000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 14h56   #8
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 60
Points : 11
Points : 11
Par défaut Restaurer une base de données

J'ai trouvé une solution , juste apres la restauration de ma base , femeture etc...
Je refais une connexion avec qui se plante dans try catch ou je ne gere pas l'exception (Qui est l'erreur de transport) , puis après ca , ca fonctionne.

Etant convaincue qu'il doit y avoir une solution plus propre je laisse ouverte cette discution en attendant...
Am34000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h15   #9
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
Bonjour,

Citation:
Envoyé par majbou
ou plus expéditif :
- "ALTER DATABASE XXX SET OFFLINE WITH ROLLBACK IMMDIATE"
Certes cela fonctionne, mais il arrive parfois que le ROLLBAKC IMMEDIATE ne fonctionne pas et que la base de données passe en SINGLE_USER ...

La solution du KILL est préférable mais pas sympa pour les applications et utilisateurs qui l'utilisent ...

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket 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 04h48.


 
 
 
 
Partenaires

Hébergement Web